Skip to content

Commit

Permalink
Expose the CTFont-creation functions with options parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
jfkthame authored Sep 19, 2023
1 parent e589abe commit d3c9995
Showing 1 changed file with 37 additions and 2 deletions.
39 changes: 37 additions & 2 deletions core-text/src/font.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit d3c9995

Please sign in to comment.