<!-- Please describe your changes on the following line: --> This PR adds support for DirectWrite text rendering using a thin wrapper for dwrite, as well as similar functionality added to WebRender. In doing so it removes the FreeType dep from the Windows build. There is still work to be done here, but this is a good starting point for future cleanup and fixes. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [ ] `./mach test-tidy` does not report any errors - [X] These changes fix #13371 (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [X] These changes do not require tests because they are already tested by other tests <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> Source-Repo: https://github.com/servo/servo Source-Revision: 796fae4bbe966a4e6e32b01fa44f6123c7162992
54 lines
1.5 KiB
Rust
54 lines
1.5 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* 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"))]
|
|
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, font_context, font_list, font_template};
|
|
|
|
#[cfg(target_os = "macos")]
|
|
pub use platform::macos::{font, font_context, font_list, font_template};
|
|
|
|
#[cfg(any(target_os = "linux", target_os = "android"))]
|
|
mod freetype {
|
|
use libc::c_char;
|
|
use std::ffi::CStr;
|
|
use std::str;
|
|
|
|
/// Creates a String from the given null-terminated buffer.
|
|
/// Panics if the buffer does not contain UTF-8.
|
|
unsafe fn c_str_to_string(s: *const c_char) -> String {
|
|
str::from_utf8(CStr::from_ptr(s).to_bytes()).unwrap().to_owned()
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
#[cfg(target_os = "macos")]
|
|
mod macos {
|
|
pub mod font;
|
|
pub mod font_context;
|
|
pub mod font_list;
|
|
pub mod font_template;
|
|
}
|
|
|
|
#[cfg(target_os = "windows")]
|
|
mod windows {
|
|
pub mod font;
|
|
pub mod font_context;
|
|
pub mod font_list;
|
|
pub mod font_template;
|
|
}
|