API Notes: CoreText framework


An introduction to PyObjC describes the general method for translating Objective-C calls into Python calls, including the handling of pass-by-reference arguments and buffers.

This document describes where the PyObjC bindings for this framework are different from the general rule, such as mentioning APIs that are not supported or where the interface is different than expected.

The full API is described in Apple’s documentation, both the C and Objective-C APIs are available (but see the API Notes below).

These bindings are accessed through the CoreText package (that is, import CoreText).

API Notes

  • CTFontCreateWithQuickdrawInstance

    This function is not supported by PyObjC.

  • CTFrameGetLineOrigins

    The length of the range argument must not be 0.

  • CTParagraphStyleSetting

    This structure is not yet supported.

  • CTFontGetPlatformFont

    This function is not supported, because the ATS framework does not have wrappers.

  • CTFontCopyAvailableTables

    This function returns a python tuple, not a CFArrayRef. That’s because the C version returns a CFArray that doesn’t contain objects.

  • CTParagraphStyleGetValueForSpecifier

    This returns a python string containing the actual value, you’ll have to decode this using the struct module to get at the real value.

  • CTParagraphStyleCreate and CTParagraphStyleGetValueForSpecifier

    Both API’s have a rather low-level interface in Python: you’ll have to encode the value to a python buffer (string), or decode it from such a buffer yourself using the struct module.

    As a convenience the sizes of value types are defined as sizeof_TYPE, for example sizeof_CGFloat.

    A special case is kCTParagraphStyleSpecifierTabStops, it’s value should be an instance of NSArray when using with CTParagraphStyleCreate. Note that arbitrary Python sequences won’t work here.

    Use CTParagraphStyleGetTabStops to fetch the tabstops from a style object, using CTParagraphStyleGetValueSpecifieker is not supported with key kCTParagraphStyleSpecifierTabStops.

  • All types and constants definied in “SFNTLayoutTypes.h” and “SFNTTypes.h” are not yet supported

  • CTRunDelegateGetRefCon

    This function is only supported when the runDelegate argument was created in Python.

  • CTRunDelegateCreate

    The first argument is a tuple with the getAscent, getDescent and getWidth functions, the second argument is an arbitrary python object.