Minimal Win32 font platform implementation.

This uses a (very simple) Win32 API call to enumerate font
families available, and load them as byte buffers.

The font rasterization itself is done by freetype.

This gets Servo + WR + Windows working, but should be improved
by adding a proper implementation that matches fonts correctly
and also uses DirectWrite (or GDI) to handle font rasterization.
This commit is contained in:
Glenn Watson 2016-10-04 16:49:56 +10:00
parent 19a5a30113
commit 0849607239
7 changed files with 195 additions and 13 deletions

View file

@ -2,16 +2,19 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#[cfg(any(target_os = "linux", target_os = "android", all(target_os = "windows", target_env = "gnu")))]
pub use platform::freetype::{font, font_context, font_list, font_template};
#[cfg(any(target_os = "linux", target_os = "android", target_os = "windows"))]
pub use platform::freetype::{font, font_context};
#[cfg(any(target_os = "linux", target_os = "android"))]
pub use platform::freetype::{font_list, font_template};
#[cfg(target_os = "windows")]
pub use platform::windows::{font_list, font_template};
#[cfg(target_os = "macos")]
pub use platform::macos::{font, font_context, font_list, font_template};
#[cfg(all(target_os = "windows", target_env = "msvc"))]
pub use platform::dummy::{font, font_context, font_list, font_template};
#[cfg(any(target_os = "linux", target_os = "android", all(target_os = "windows", target_env = "gnu")))]
#[cfg(any(target_os = "linux", target_os = "android", target_os = "windows"))]
mod freetype {
use libc::c_char;
use std::ffi::CStr;
@ -25,7 +28,11 @@ mod freetype {
pub mod font;
pub mod font_context;
#[cfg(any(target_os = "linux", target_os = "android"))]
pub mod font_list;
#[cfg(any(target_os = "linux", target_os = "android"))]
pub mod font_template;
}
@ -37,10 +44,8 @@ mod macos {
pub mod font_template;
}
#[cfg(all(target_os = "windows", target_env = "msvc"))]
mod dummy {
pub mod font;
pub mod font_context;
#[cfg(target_os = "windows")]
mod windows {
pub mod font_list;
pub mod font_template;
}