Expose the CTFont-creation functions with options parameter (#636)

This commit is contained in:
jfkthame
2023-09-19 15:41:56 -04:00
committed by GitHub
parent e589abe82e
commit 91fb8c385a
+37 -2
View File
@@ -180,6 +180,18 @@ pub fn new_from_descriptor(desc: &CTFontDescriptor, pt_size: f64) -> CTFont {
}
}
pub fn new_from_descriptor_and_options(desc: &CTFontDescriptor, pt_size: f64, options: CTFontOptions) -> CTFont {
unsafe {
let font_ref = CTFontCreateWithFontDescriptorAndOptions(
desc.as_concrete_TypeRef(),
pt_size as CGFloat,
ptr::null(),
options,
);
CTFont::wrap_under_create_rule(font_ref)
}
}
pub fn new_from_buffer(buffer: &[u8]) -> Result<CTFont, ()> {
let ct_font_descriptor = create_font_descriptor(buffer)?;
Ok(new_from_descriptor(&ct_font_descriptor, 16.0))
@@ -198,6 +210,19 @@ pub fn new_from_name(name: &str, pt_size: f64) -> Result<CTFont, ()> {
}
}
pub fn new_from_name_and_options(name: &str, pt_size: f64, options: CTFontOptions) -> Result<CTFont, ()> {
unsafe {
let name: CFString = name.parse().unwrap();
let font_ref =
CTFontCreateWithNameAndOptions(name.as_concrete_TypeRef(), pt_size as CGFloat, ptr::null(), options);
if font_ref.is_null() {
Err(())
} else {
Ok(CTFont::wrap_under_create_rule(font_ref))
}
}
}
pub fn new_ui_font_for_language(
ui_type: CTFontUIFontType,
size: f64,
@@ -611,13 +636,23 @@ extern "C" {
size: CGFloat,
matrix: *const CGAffineTransform,
) -> CTFontRef;
//fn CTFontCreateWithNameAndOptions
fn CTFontCreateWithNameAndOptions(
name: CFStringRef,
size: CGFloat,
matrix: *const CGAffineTransform,
options: CTFontOptions,
) -> CTFontRef;
fn CTFontCreateWithFontDescriptor(
descriptor: CTFontDescriptorRef,
size: CGFloat,
matrix: *const CGAffineTransform,
) -> CTFontRef;
//fn CTFontCreateWithFontDescriptorAndOptions
fn CTFontCreateWithFontDescriptorAndOptions(
descriptor: CTFontDescriptorRef,
size: CGFloat,
matrix: *const CGAffineTransform,
options: CTFontOptions,
) -> CTFontRef;
fn CTFontCreateUIFontForLanguage(
uiType: CTFontUIFontType,
size: CGFloat,