diff --git a/harfbuzz-sys/Cargo.toml b/harfbuzz-sys/Cargo.toml index f6dc5214..1bc6701b 100644 --- a/harfbuzz-sys/Cargo.toml +++ b/harfbuzz-sys/Cargo.toml @@ -33,11 +33,20 @@ core-graphics = "0.22" core-text = "19" foreign-types = "0.3" +[target.'cfg(target_family = "windows")'.dependencies.winapi] +version = "0.3" +features = ["dwrite"] + [target.'cfg(any(target_os = "android", all(unix, not(target_vendor = "apple"))))'.dependencies] freetype = { version = "0.7", default-features = false } +[dependencies.freetype] +version = "0.7" +default-features = false +optional = true + [features] default = ["build-native-harfbuzz", "build-native-freetype"] bindgen = ["bindgen_", "regex"] -build-native-harfbuzz = ["cc"] -build-native-freetype = ["freetype/freetype-sys"] +build-native-harfbuzz = ["cc", "pkg-config"] +build-native-freetype = ["freetype", "freetype/freetype-sys"] diff --git a/harfbuzz-sys/build.rs b/harfbuzz-sys/build.rs index 4323aed2..b1b85281 100644 --- a/harfbuzz-sys/build.rs +++ b/harfbuzz-sys/build.rs @@ -97,6 +97,10 @@ fn main() { cfg.define("HAVE_CORETEXT", "1"); } + if target.contains("windows") { + cfg.define("HAVE_DIRECTWRITE", "1"); + } + if target.contains("windows-gnu") { cfg.flag("-Wa,-mbig-obj"); } diff --git a/harfbuzz-sys/src/directwrite.rs b/harfbuzz-sys/src/directwrite.rs new file mode 100644 index 00000000..af379be7 --- /dev/null +++ b/harfbuzz-sys/src/directwrite.rs @@ -0,0 +1,9 @@ +extern crate winapi; + +use hb_face_t; + +use self::winapi::um::dwrite::IDWriteFontFace; + +extern "C" { + pub fn hb_directwrite_face_create(font_face: *mut IDWriteFontFace) -> *mut hb_face_t; +} diff --git a/harfbuzz-sys/src/lib.rs b/harfbuzz-sys/src/lib.rs index a89de403..3258c9f5 100644 --- a/harfbuzz-sys/src/lib.rs +++ b/harfbuzz-sys/src/lib.rs @@ -1,10 +1,13 @@ -#[cfg(any(target_os = "android", all(unix, not(target_vendor = "apple"))))] +#[cfg(any(target_os = "android", all(unix, not(target_vendor = "apple")), feature="build-native-freetype"))] extern crate freetype; #[cfg(target_vendor = "apple")] pub mod coretext; -#[cfg(any(target_os = "android", all(unix, not(target_vendor = "apple"))))] +#[cfg(target_family = "windows")] +pub mod directwrite; + +#[cfg(any(target_os = "android", all(unix, not(target_vendor = "apple")), feature="build-native-freetype"))] extern "C" { pub fn hb_ft_font_create_referenced(face: freetype::freetype::FT_Face) -> *mut hb_font_t; }