core_text/
font_manager.rs1use crate::font_descriptor::{CTFontDescriptor, CTFontDescriptorRef};
11use core_foundation::array::{CFArray, CFArrayRef};
12use core_foundation::base::TCFType;
13use core_foundation::data::{CFData, CFDataRef};
14use core_foundation::string::CFString;
15use core_foundation::url::CFURLRef;
16
17pub fn copy_available_font_family_names() -> CFArray<CFString> {
18 unsafe { TCFType::wrap_under_create_rule(CTFontManagerCopyAvailableFontFamilyNames()) }
19}
20
21pub fn create_font_descriptor(buffer: &[u8]) -> Result<CTFontDescriptor, ()> {
22 let cf_data = CFData::from_buffer(buffer);
23 unsafe {
24 let ct_font_descriptor_ref =
25 CTFontManagerCreateFontDescriptorFromData(cf_data.as_concrete_TypeRef());
26 if ct_font_descriptor_ref.is_null() {
27 return Err(());
28 }
29 Ok(CTFontDescriptor::wrap_under_create_rule(
30 ct_font_descriptor_ref,
31 ))
32 }
33}
34
35pub fn create_font_descriptor_with_data(data: CFData) -> Result<CTFontDescriptor, ()> {
36 unsafe {
37 let ct_font_descriptor_ref =
38 CTFontManagerCreateFontDescriptorFromData(data.as_concrete_TypeRef());
39 if ct_font_descriptor_ref.is_null() {
40 return Err(());
41 }
42 Ok(CTFontDescriptor::wrap_under_create_rule(
43 ct_font_descriptor_ref,
44 ))
45 }
46}
47
48extern "C" {
49 pub fn CTFontManagerCopyAvailableFontURLs() -> CFArrayRef;
58 pub fn CTFontManagerCopyAvailableFontFamilyNames() -> CFArrayRef;
59 pub fn CTFontManagerCopyAvailablePostScriptNames() -> CFArrayRef;
60 pub fn CTFontManagerCreateFontDescriptorsFromURL(fileURL: CFURLRef) -> CFArrayRef;
61 pub fn CTFontManagerCreateFontDescriptorFromData(data: CFDataRef) -> CTFontDescriptorRef;
62 pub fn CTFontManagerIsSupportedFont(fontURL: CFURLRef) -> bool;
69 }