use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
use crate::*;
#[doc(alias = "CGFontRef")]
#[repr(C)]
pub struct CGFont {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
cf_type!(
unsafe impl CGFont {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
unsafe impl RefEncode<"CGFont"> for CGFont {}
);
pub type CGFontIndex = c_ushort;
pub type CGGlyph = CGFontIndex;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CGFontPostScriptFormat(pub i32);
impl CGFontPostScriptFormat {
#[doc(alias = "kCGFontPostScriptFormatType1")]
pub const Type1: Self = Self(1);
#[doc(alias = "kCGFontPostScriptFormatType3")]
pub const Type3: Self = Self(3);
#[doc(alias = "kCGFontPostScriptFormatType42")]
pub const Type42: Self = Self(42);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for CGFontPostScriptFormat {
const ENCODING: Encoding = i32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for CGFontPostScriptFormat {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub static kCGFontIndexMax: CGFontIndex = 65534;
pub static kCGFontIndexInvalid: CGFontIndex = 65535;
pub static kCGGlyphMax: CGFontIndex = kCGFontIndexMax;
unsafe impl ConcreteType for CGFont {
#[doc(alias = "CGFontGetTypeID")]
#[inline]
fn type_id() -> CFTypeID {
extern "C-unwind" {
fn CGFontGetTypeID() -> CFTypeID;
}
unsafe { CGFontGetTypeID() }
}
}
impl CGFont {
#[doc(alias = "CGFontCreateWithPlatformFont")]
#[deprecated = "No longer supported"]
#[inline]
pub unsafe fn with_platform_font(
platform_font_reference: *mut c_void,
) -> Option<CFRetained<CGFont>> {
extern "C-unwind" {
fn CGFontCreateWithPlatformFont(
platform_font_reference: *mut c_void,
) -> Option<NonNull<CGFont>>;
}
let ret = unsafe { CGFontCreateWithPlatformFont(platform_font_reference) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGFontCreateWithDataProvider")]
#[cfg(feature = "CGDataProvider")]
#[inline]
pub fn with_data_provider(provider: &CGDataProvider) -> Option<CFRetained<CGFont>> {
extern "C-unwind" {
fn CGFontCreateWithDataProvider(provider: &CGDataProvider) -> Option<NonNull<CGFont>>;
}
let ret = unsafe { CGFontCreateWithDataProvider(provider) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGFontCreateWithFontName")]
#[inline]
pub fn with_font_name(name: Option<&CFString>) -> Option<CFRetained<CGFont>> {
extern "C-unwind" {
fn CGFontCreateWithFontName(name: Option<&CFString>) -> Option<NonNull<CGFont>>;
}
let ret = unsafe { CGFontCreateWithFontName(name) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGFontCreateCopyWithVariations")]
#[inline]
pub unsafe fn new_copy_with_variations(
font: Option<&CGFont>,
variations: Option<&CFDictionary>,
) -> Option<CFRetained<CGFont>> {
extern "C-unwind" {
fn CGFontCreateCopyWithVariations(
font: Option<&CGFont>,
variations: Option<&CFDictionary>,
) -> Option<NonNull<CGFont>>;
}
let ret = unsafe { CGFontCreateCopyWithVariations(font, variations) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGFontGetNumberOfGlyphs")]
#[inline]
pub fn number_of_glyphs(font: Option<&CGFont>) -> usize {
extern "C-unwind" {
fn CGFontGetNumberOfGlyphs(font: Option<&CGFont>) -> usize;
}
unsafe { CGFontGetNumberOfGlyphs(font) }
}
#[doc(alias = "CGFontGetUnitsPerEm")]
#[inline]
pub fn units_per_em(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetUnitsPerEm(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetUnitsPerEm(font) }
}
#[doc(alias = "CGFontCopyPostScriptName")]
#[inline]
pub fn post_script_name(font: Option<&CGFont>) -> Option<CFRetained<CFString>> {
extern "C-unwind" {
fn CGFontCopyPostScriptName(font: Option<&CGFont>) -> Option<NonNull<CFString>>;
}
let ret = unsafe { CGFontCopyPostScriptName(font) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGFontCopyFullName")]
#[inline]
pub fn full_name(font: Option<&CGFont>) -> Option<CFRetained<CFString>> {
extern "C-unwind" {
fn CGFontCopyFullName(font: Option<&CGFont>) -> Option<NonNull<CFString>>;
}
let ret = unsafe { CGFontCopyFullName(font) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGFontGetAscent")]
#[inline]
pub fn ascent(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetAscent(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetAscent(font) }
}
#[doc(alias = "CGFontGetDescent")]
#[inline]
pub fn descent(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetDescent(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetDescent(font) }
}
#[doc(alias = "CGFontGetLeading")]
#[inline]
pub fn leading(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetLeading(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetLeading(font) }
}
#[doc(alias = "CGFontGetCapHeight")]
#[inline]
pub fn cap_height(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetCapHeight(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetCapHeight(font) }
}
#[doc(alias = "CGFontGetXHeight")]
#[inline]
pub fn x_height(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetXHeight(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetXHeight(font) }
}
#[doc(alias = "CGFontGetFontBBox")]
#[inline]
pub fn font_b_box(font: Option<&CGFont>) -> CGRect {
extern "C-unwind" {
fn CGFontGetFontBBox(font: Option<&CGFont>) -> CGRect;
}
unsafe { CGFontGetFontBBox(font) }
}
#[doc(alias = "CGFontGetItalicAngle")]
#[inline]
pub fn italic_angle(font: Option<&CGFont>) -> CGFloat {
extern "C-unwind" {
fn CGFontGetItalicAngle(font: Option<&CGFont>) -> CGFloat;
}
unsafe { CGFontGetItalicAngle(font) }
}
#[doc(alias = "CGFontGetStemV")]
#[inline]
pub fn stem_v(font: Option<&CGFont>) -> CGFloat {
extern "C-unwind" {
fn CGFontGetStemV(font: Option<&CGFont>) -> CGFloat;
}
unsafe { CGFontGetStemV(font) }
}
#[doc(alias = "CGFontCopyVariationAxes")]
#[inline]
pub fn variation_axes(font: Option<&CGFont>) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CGFontCopyVariationAxes(font: Option<&CGFont>) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CGFontCopyVariationAxes(font) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGFontCopyVariations")]
#[inline]
pub fn variations(font: Option<&CGFont>) -> Option<CFRetained<CFDictionary>> {
extern "C-unwind" {
fn CGFontCopyVariations(font: Option<&CGFont>) -> Option<NonNull<CFDictionary>>;
}
let ret = unsafe { CGFontCopyVariations(font) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGFontGetGlyphAdvances")]
#[inline]
pub unsafe fn glyph_advances(
font: Option<&CGFont>,
glyphs: NonNull<CGGlyph>,
count: usize,
advances: NonNull<c_int>,
) -> bool {
extern "C-unwind" {
fn CGFontGetGlyphAdvances(
font: Option<&CGFont>,
glyphs: NonNull<CGGlyph>,
count: usize,
advances: NonNull<c_int>,
) -> bool;
}
unsafe { CGFontGetGlyphAdvances(font, glyphs, count, advances) }
}
#[doc(alias = "CGFontGetGlyphBBoxes")]
#[inline]
pub unsafe fn glyph_b_boxes(
font: Option<&CGFont>,
glyphs: NonNull<CGGlyph>,
count: usize,
bboxes: NonNull<CGRect>,
) -> bool {
extern "C-unwind" {
fn CGFontGetGlyphBBoxes(
font: Option<&CGFont>,
glyphs: NonNull<CGGlyph>,
count: usize,
bboxes: NonNull<CGRect>,
) -> bool;
}
unsafe { CGFontGetGlyphBBoxes(font, glyphs, count, bboxes) }
}
#[doc(alias = "CGFontGetGlyphWithGlyphName")]
#[inline]
pub fn glyph_with_glyph_name(font: Option<&CGFont>, name: Option<&CFString>) -> CGGlyph {
extern "C-unwind" {
fn CGFontGetGlyphWithGlyphName(
font: Option<&CGFont>,
name: Option<&CFString>,
) -> CGGlyph;
}
unsafe { CGFontGetGlyphWithGlyphName(font, name) }
}
#[doc(alias = "CGFontCopyGlyphNameForGlyph")]
#[inline]
pub fn glyph_name_for_glyph(
font: Option<&CGFont>,
glyph: CGGlyph,
) -> Option<CFRetained<CFString>> {
extern "C-unwind" {
fn CGFontCopyGlyphNameForGlyph(
font: Option<&CGFont>,
glyph: CGGlyph,
) -> Option<NonNull<CFString>>;
}
let ret = unsafe { CGFontCopyGlyphNameForGlyph(font, glyph) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGFontCanCreatePostScriptSubset")]
#[inline]
pub fn can_create_post_script_subset(
font: Option<&CGFont>,
format: CGFontPostScriptFormat,
) -> bool {
extern "C-unwind" {
fn CGFontCanCreatePostScriptSubset(
font: Option<&CGFont>,
format: CGFontPostScriptFormat,
) -> bool;
}
unsafe { CGFontCanCreatePostScriptSubset(font, format) }
}
#[doc(alias = "CGFontCopyTableTags")]
#[inline]
pub fn table_tags(font: Option<&CGFont>) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CGFontCopyTableTags(font: Option<&CGFont>) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CGFontCopyTableTags(font) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGFontCopyTableForTag")]
#[inline]
pub fn table_for_tag(font: Option<&CGFont>, tag: u32) -> Option<CFRetained<CFData>> {
extern "C-unwind" {
fn CGFontCopyTableForTag(font: Option<&CGFont>, tag: u32) -> Option<NonNull<CFData>>;
}
let ret = unsafe { CGFontCopyTableForTag(font, tag) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
}
extern "C" {
pub static kCGFontVariationAxisName: &'static CFString;
}
extern "C" {
pub static kCGFontVariationAxisMinValue: &'static CFString;
}
extern "C" {
pub static kCGFontVariationAxisMaxValue: &'static CFString;
}
extern "C" {
pub static kCGFontVariationAxisDefaultValue: &'static CFString;
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CGGlyphDeprecatedEnum(pub i32);
impl CGGlyphDeprecatedEnum {
#[doc(alias = "CGGlyphMin")]
#[deprecated]
pub const Min: Self = Self(0);
#[doc(alias = "CGGlyphMax")]
#[deprecated]
pub const Max: Self = Self(1);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for CGGlyphDeprecatedEnum {
const ENCODING: Encoding = i32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for CGGlyphDeprecatedEnum {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[deprecated = "renamed to `CGFont::with_platform_font`"]
#[inline]
pub unsafe extern "C-unwind" fn CGFontCreateWithPlatformFont(
platform_font_reference: *mut c_void,
) -> Option<CFRetained<CGFont>> {
extern "C-unwind" {
fn CGFontCreateWithPlatformFont(
platform_font_reference: *mut c_void,
) -> Option<NonNull<CGFont>>;
}
let ret = unsafe { CGFontCreateWithPlatformFont(platform_font_reference) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[cfg(feature = "CGDataProvider")]
#[deprecated = "renamed to `CGFont::with_data_provider`"]
#[inline]
pub extern "C-unwind" fn CGFontCreateWithDataProvider(
provider: &CGDataProvider,
) -> Option<CFRetained<CGFont>> {
extern "C-unwind" {
fn CGFontCreateWithDataProvider(provider: &CGDataProvider) -> Option<NonNull<CGFont>>;
}
let ret = unsafe { CGFontCreateWithDataProvider(provider) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CGFont::with_font_name`"]
#[inline]
pub extern "C-unwind" fn CGFontCreateWithFontName(
name: Option<&CFString>,
) -> Option<CFRetained<CGFont>> {
extern "C-unwind" {
fn CGFontCreateWithFontName(name: Option<&CFString>) -> Option<NonNull<CGFont>>;
}
let ret = unsafe { CGFontCreateWithFontName(name) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CGFont::new_copy_with_variations`"]
#[inline]
pub unsafe extern "C-unwind" fn CGFontCreateCopyWithVariations(
font: Option<&CGFont>,
variations: Option<&CFDictionary>,
) -> Option<CFRetained<CGFont>> {
extern "C-unwind" {
fn CGFontCreateCopyWithVariations(
font: Option<&CGFont>,
variations: Option<&CFDictionary>,
) -> Option<NonNull<CGFont>>;
}
let ret = unsafe { CGFontCreateCopyWithVariations(font, variations) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CGFont::number_of_glyphs`"]
#[inline]
pub extern "C-unwind" fn CGFontGetNumberOfGlyphs(font: Option<&CGFont>) -> usize {
extern "C-unwind" {
fn CGFontGetNumberOfGlyphs(font: Option<&CGFont>) -> usize;
}
unsafe { CGFontGetNumberOfGlyphs(font) }
}
#[deprecated = "renamed to `CGFont::units_per_em`"]
#[inline]
pub extern "C-unwind" fn CGFontGetUnitsPerEm(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetUnitsPerEm(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetUnitsPerEm(font) }
}
#[deprecated = "renamed to `CGFont::post_script_name`"]
#[inline]
pub extern "C-unwind" fn CGFontCopyPostScriptName(
font: Option<&CGFont>,
) -> Option<CFRetained<CFString>> {
extern "C-unwind" {
fn CGFontCopyPostScriptName(font: Option<&CGFont>) -> Option<NonNull<CFString>>;
}
let ret = unsafe { CGFontCopyPostScriptName(font) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CGFont::full_name`"]
#[inline]
pub extern "C-unwind" fn CGFontCopyFullName(font: Option<&CGFont>) -> Option<CFRetained<CFString>> {
extern "C-unwind" {
fn CGFontCopyFullName(font: Option<&CGFont>) -> Option<NonNull<CFString>>;
}
let ret = unsafe { CGFontCopyFullName(font) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CGFont::ascent`"]
#[inline]
pub extern "C-unwind" fn CGFontGetAscent(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetAscent(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetAscent(font) }
}
#[deprecated = "renamed to `CGFont::descent`"]
#[inline]
pub extern "C-unwind" fn CGFontGetDescent(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetDescent(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetDescent(font) }
}
#[deprecated = "renamed to `CGFont::leading`"]
#[inline]
pub extern "C-unwind" fn CGFontGetLeading(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetLeading(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetLeading(font) }
}
#[deprecated = "renamed to `CGFont::cap_height`"]
#[inline]
pub extern "C-unwind" fn CGFontGetCapHeight(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetCapHeight(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetCapHeight(font) }
}
#[deprecated = "renamed to `CGFont::x_height`"]
#[inline]
pub extern "C-unwind" fn CGFontGetXHeight(font: Option<&CGFont>) -> c_int {
extern "C-unwind" {
fn CGFontGetXHeight(font: Option<&CGFont>) -> c_int;
}
unsafe { CGFontGetXHeight(font) }
}
#[deprecated = "renamed to `CGFont::font_b_box`"]
#[inline]
pub extern "C-unwind" fn CGFontGetFontBBox(font: Option<&CGFont>) -> CGRect {
extern "C-unwind" {
fn CGFontGetFontBBox(font: Option<&CGFont>) -> CGRect;
}
unsafe { CGFontGetFontBBox(font) }
}
#[deprecated = "renamed to `CGFont::italic_angle`"]
#[inline]
pub extern "C-unwind" fn CGFontGetItalicAngle(font: Option<&CGFont>) -> CGFloat {
extern "C-unwind" {
fn CGFontGetItalicAngle(font: Option<&CGFont>) -> CGFloat;
}
unsafe { CGFontGetItalicAngle(font) }
}
#[deprecated = "renamed to `CGFont::stem_v`"]
#[inline]
pub extern "C-unwind" fn CGFontGetStemV(font: Option<&CGFont>) -> CGFloat {
extern "C-unwind" {
fn CGFontGetStemV(font: Option<&CGFont>) -> CGFloat;
}
unsafe { CGFontGetStemV(font) }
}
#[deprecated = "renamed to `CGFont::variation_axes`"]
#[inline]
pub extern "C-unwind" fn CGFontCopyVariationAxes(
font: Option<&CGFont>,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CGFontCopyVariationAxes(font: Option<&CGFont>) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CGFontCopyVariationAxes(font) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CGFont::variations`"]
#[inline]
pub extern "C-unwind" fn CGFontCopyVariations(
font: Option<&CGFont>,
) -> Option<CFRetained<CFDictionary>> {
extern "C-unwind" {
fn CGFontCopyVariations(font: Option<&CGFont>) -> Option<NonNull<CFDictionary>>;
}
let ret = unsafe { CGFontCopyVariations(font) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
extern "C-unwind" {
#[deprecated = "renamed to `CGFont::glyph_advances`"]
pub fn CGFontGetGlyphAdvances(
font: Option<&CGFont>,
glyphs: NonNull<CGGlyph>,
count: usize,
advances: NonNull<c_int>,
) -> bool;
}
extern "C-unwind" {
#[deprecated = "renamed to `CGFont::glyph_b_boxes`"]
pub fn CGFontGetGlyphBBoxes(
font: Option<&CGFont>,
glyphs: NonNull<CGGlyph>,
count: usize,
bboxes: NonNull<CGRect>,
) -> bool;
}
#[deprecated = "renamed to `CGFont::glyph_with_glyph_name`"]
#[inline]
pub extern "C-unwind" fn CGFontGetGlyphWithGlyphName(
font: Option<&CGFont>,
name: Option<&CFString>,
) -> CGGlyph {
extern "C-unwind" {
fn CGFontGetGlyphWithGlyphName(font: Option<&CGFont>, name: Option<&CFString>) -> CGGlyph;
}
unsafe { CGFontGetGlyphWithGlyphName(font, name) }
}
#[deprecated = "renamed to `CGFont::glyph_name_for_glyph`"]
#[inline]
pub extern "C-unwind" fn CGFontCopyGlyphNameForGlyph(
font: Option<&CGFont>,
glyph: CGGlyph,
) -> Option<CFRetained<CFString>> {
extern "C-unwind" {
fn CGFontCopyGlyphNameForGlyph(
font: Option<&CGFont>,
glyph: CGGlyph,
) -> Option<NonNull<CFString>>;
}
let ret = unsafe { CGFontCopyGlyphNameForGlyph(font, glyph) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CGFont::can_create_post_script_subset`"]
#[inline]
pub extern "C-unwind" fn CGFontCanCreatePostScriptSubset(
font: Option<&CGFont>,
format: CGFontPostScriptFormat,
) -> bool {
extern "C-unwind" {
fn CGFontCanCreatePostScriptSubset(
font: Option<&CGFont>,
format: CGFontPostScriptFormat,
) -> bool;
}
unsafe { CGFontCanCreatePostScriptSubset(font, format) }
}
#[deprecated = "renamed to `CGFont::table_tags`"]
#[inline]
pub extern "C-unwind" fn CGFontCopyTableTags(font: Option<&CGFont>) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CGFontCopyTableTags(font: Option<&CGFont>) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CGFontCopyTableTags(font) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CGFont::table_for_tag`"]
#[inline]
pub extern "C-unwind" fn CGFontCopyTableForTag(
font: Option<&CGFont>,
tag: u32,
) -> Option<CFRetained<CFData>> {
extern "C-unwind" {
fn CGFontCopyTableForTag(font: Option<&CGFont>, tag: u32) -> Option<NonNull<CFData>>;
}
let ret = unsafe { CGFontCopyTableForTag(font, tag) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}