jjgod <gzjjgod@gmail.com>
: X11, Mac OS X   Win32


      (                        )




                google
URL
"hello world"
“hello world”
:
UTF-8
 char *: "hello, world0"
                    ASCII


                                O(1)   O(n)
           str[n]               n
        Unix
 glib
:
UTF-16/UCS-2
 short [] = { 0, 'h', 0, 'e', 0, 'l', ... }
   Little Endian   Big Endian
         (                          )
   Win32 Unicode         Mac OS X       Core
 Foundation, NSFoundation
     UCS-2                                     O(1)
          Plane 1+,                     Surrogate
                                    O(n)
:
UTF-32
 uint32_t [] = { 'h', 'e', 'l', 'l', 'o' }
                   O(1)
                     4


   ICU
glib:                        Unicode
            C              ctype.h, string.h
(C)
libutf-8:              UTF-8                   (C)
libutf8:        C                      UTF-8
wchar_t              (C)
ICU:                Unicode            (C/C++)
(character)    (glyph)



'h'


'A','´'       'Á'
:
Layout Engine


       Widths in, Heights
                     out.
                –– David Baron
:
:

InstalledFontCollection          (.NET),   EnumFontFamilies
(Win32 API, C)

fontconfig:           (C)
ATS (Apple Type Services): Mac OS X


                                              API,
                 Font
:
fontconfig


       (*nix, Mac OS X, Win32)
     Xft
       X Hacker Keith Packard
                    (fc-list, fc-match, fc-cache)
:
          : FreeType


API
      , C API
                           : TrueType, Type 1,
OpenType, CFF, CID, dfont, pcf
                    : fontconfig, xft, cairo, pango, ICU
                         : metrics (   )
:
: metrics
:
Layout Engine
 Uniscribe: Windows Unicode Layout Engine (C++)
 pango:                    GTK+/GNOME                        (C)
 ICU:           (C++)
 ATSUI (Apple Type Services for Unicode Imaging): Mac OS X 10.4-,
           deprecate (C)
 Core Text: Mac OS X 10.5 (C)
 Cocoa Text System: Mac OS X (Objective C)
helloworld
HelloWorld
:
Windows

   :      16pt
   :      ClearType
:
Mac OS X
:
FreeType


       /       TrueType Bytecode Interpreter
       /       Auto-hinter
 Gamma
     : Maxim Shemanarev, Texts Rasterization
 Exposures (http://www.antigrain.com/research/font_rasterization)
Win32:          Win32 Drawing Context
TextOut
Mac OS X:          Quartz Context
ATSUDrawText     CGShowGlyphs
          FreeType                      pango,
cairo
:
GTK+

 gchar *

             pango     cairo_show_glyphs

 FT_Face

           fontconfig


FreeType   FCFontSet
:
Core Text

 CFSTR *

            CTTypesetter       CTLineDraw

 CTFont

            CTFontCollection


Core Text   CTFontDescriptor
:
Win32

 WCHAR

                Uniscribe        TextOut

  HFONT

              EnumFontFamilies


win32 api         LOGFONT
Questions?