From b3bd6479167b66598b8fa4f494c5f018db51c9a2 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Tue, 25 Apr 2017 19:49:15 -0700 Subject: [PATCH] =?UTF-8?q?measured=20font=20=E2=80=94=C2=A0not=20working?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pitfall/pitfall/fira.otf | Bin 0 -> 113100 bytes pitfall/pitfall/freetype-ffi.rkt | 244 ++++++++++++++++++++++ pitfall/pitfall/measure.rkt | 31 +++ pitfall/pitfall/minimal-embedded-font.rkt | 5 +- pitfall/pitfall/minimal-measured-font.rkt | 87 ++++++++ pitfall/pitfall/render.rkt | 9 +- 6 files changed, 368 insertions(+), 8 deletions(-) create mode 100755 pitfall/pitfall/fira.otf create mode 100644 pitfall/pitfall/freetype-ffi.rkt create mode 100644 pitfall/pitfall/measure.rkt create mode 100644 pitfall/pitfall/minimal-measured-font.rkt diff --git a/pitfall/pitfall/fira.otf b/pitfall/pitfall/fira.otf new file mode 100755 index 0000000000000000000000000000000000000000..280fe8a7e49d15eff96f6d533c4fca9341dcfb34 GIT binary patch literal 113100 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 Iq(o!>9|KKUBme*a literal 0 HcmV?d00001 diff --git a/pitfall/pitfall/freetype-ffi.rkt b/pitfall/pitfall/freetype-ffi.rkt new file mode 100644 index 00000000..1749a904 --- /dev/null +++ b/pitfall/pitfall/freetype-ffi.rkt @@ -0,0 +1,244 @@ +#lang racket/base +(require ffi/unsafe + ffi/unsafe/define + racket/draw/private/libs) + +(define-syntax-rule (define+provide id val) + (begin + (define id val) + (provide id))) + +(define-runtime-lib freetype-lib + [(unix) #f] ; todo: get unix runtime path + [(macosx) (ffi-lib "libfreetype.6.dylib")] + [(windows) (ffi-lib "libfreetype-6.dll")]) + +(define-ffi-definer define-freetype freetype-lib #:provide provide) + +;; types +(define _void-pointer (_cpointer 'void-pointer)) +(define _char _byte) +(define _char-pointer (_cpointer 'char-pointer)) +(define _uchar _ubyte) +(define _FT_Byte _ubyte) +(define _FT_Bytes _bytes) +(define _FT_Char _char) +(define _FT_Int _int) +(define _FT_UInt _uint) +(define _FT_Int16 _short) +(define _FT_UInt16 _ushort) +(define _FT_Int32 _int32) +(define _FT_UInt32 _uint32) +(define _FT_Short _short) +(define _FT_UShort _ushort) +(define _FT_Long _long) +(define _FT_ULong _ulong) +(define _FT_Bool _byte) +(define _FT_Offset _size) ;; equivalent to _size_t? +(define _FT_PtrDist _ptrdiff) ;; equivalent to _longlong? +(define _FT_String _char) +(define _FT_String-pointer (_cpointer 'FT_String-pointer)) ;; char* +(define _FT_Tag _FT_UInt32) +(define _FT_Error _int) +(define _FT_Fixed _long) +(define _FT_Pointer _void-pointer) +(define _FT_Pos _long) +(define _FT_FWord _short) +(define _FT_UFWord _ushort) +(define _FT_F26Dot16 _short) +(define _FT_F26Dot6 _long) +(define _FT_Glyph_Format _int) +(define _FT_Encoding _int) +(define _FT_Generic_Finalizer (_cpointer '_FT_Generic_Finalizer (_fun _void-pointer -> _void))) + +(define _FT_LibraryRec (_cpointer 'FT_LibraryRec)) +(define _FT_Library (_cpointer 'FT_Library)) + +(define-cstruct _FT_Bitmap_Size + ([height _FT_Short] + [width _FT_Short] + [size _FT_Pos] + [x_ppem _FT_Pos] + [y_ppem _FT_Pos])) + +(define-cstruct _FT_CharMapRec + ([face _void-pointer] ; should be FT_Face + [encoding _FT_Encoding] + [platform_id _FT_UShort] + [encoding_id _FT_UShort])) + +(define _FT_Charmap _FT_CharMapRec-pointer) +(define _FT_CharMap-pointer (_cpointer 'FT_CharMap-pointer)) + +(define-cstruct _FT_Generic + ([data _void-pointer] + [finalizer _FT_Generic_Finalizer])) + +(define-cstruct _FT_BBox + ([xMin _FT_Pos] + [yMin _FT_Pos] + [xMax _FT_Pos] + [yMax _FT_Pos])) + +(define-cstruct _FT_Glyph_Metrics + ([width _FT_Pos] + [height _FT_Pos] + [horiBearingX _FT_Pos] + [horiBearingY _FT_Pos] + [horiAdvance _FT_Pos] + [vertBearingX _FT_Pos] + [vertBearingY _FT_Pos] + [vertAdvance _FT_Pos])) + +(define-cstruct _FT_Vector + ([x _FT_Pos] + [y _FT_Pos])) + +(provide (struct-out FT_Vector) + _FT_Vector _FT_Vector-pointer) + +(define-cstruct _FT_Bitmap + ([rows _int] + [width _int] + [pitch _int] + [buffer (_cpointer 'buffer)] + [num_grays _short] + [pixel_mode _ubyte] + [palette_mode _char] + [palette _void-pointer])) + +(define-cstruct _FT_Outline + ([n_contours _short] + [n_points _short] + [points _FT_Vector-pointer] + [tags (_cpointer 'tags)] + [contours (_cpointer 'contours)] + [flags _int])) + +(define-cstruct _FT_GlyphSlotRec + ([library _FT_Library] + [face _void-pointer] + [next _void-pointer] + [reserved _uint] + [generic _FT_Generic] + [metrics _FT_Glyph_Metrics] + [linearHoriAdvance _FT_Fixed] + [linearVertAdvance _FT_Fixed] + [advance _FT_Vector] + [format _FT_Glyph_Format] + [bitmap _FT_Bitmap] + [bitmap_left _FT_Int] + [bitmap_top _FT_Int] + [outline _FT_Outline] + [num_subglyphs _FT_UInt] + [subglyphs _void-pointer] + [control_data _void-pointer] + [control_len _long] + [lsb_delta _FT_Pos] + [rsb_delta _FT_Pos] + [other _void-pointer] + [internal _void-pointer])) + +(define _FT_GlyphSlot _FT_GlyphSlotRec-pointer) + +(provide (struct-out FT_GlyphSlotRec) + _FT_GlyphSlotRec _FT_GlyphSlotRec-pointer) + +(define-cstruct _FT_Size_Metrics + ([x_ppem _FT_UShort] + [y_ppem _FT_UShort] + [x_scale _FT_Fixed] + [y_scale _FT_Fixed] + [ascender _FT_Pos] + [descender _FT_Pos] + [height _FT_Pos] + [max_advance _FT_Pos])) + +(define-cstruct _FT_SizeRec + ([face _void-pointer] + [generic _FT_Generic] + [metrics _FT_Size_Metrics] + [internal _void-pointer])) + +(define _FT_Size _FT_SizeRec-pointer) + +(define-cstruct _FT_FaceRec + ([num_faces _FT_Long] + [face_index _FT_Long] + [face_flag _FT_Long] + [style_flags _FT_Long] + [num_glyphs _FT_Long] + [family_name _string] ; probably _string is a better choice + [style_name _string] + [num_fixed_sizes _FT_Int] + [available_sizes _FT_Bitmap_Size-pointer] + [num_charmaps _FT_Int] + [charmaps _FT_CharMap-pointer] + [generic _FT_Generic] + [bbox _FT_BBox] + [units_per_EM _FT_UShort] + [ascender _FT_Short] + [descender _FT_Short] + [height _FT_Short] + [max_advance_width _FT_Short] + [max_advance_height _FT_Short] + [underline_position _FT_Short] + [underline_thickness _FT_Short] + [glyph _FT_GlyphSlot] + [size _FT_Size] + [charmap _FT_Charmap] + [driver _void-pointer] + [memory _void-pointer] + [stream _void-pointer] + [sizes_list_head _void-pointer] + [sizes_list_tail _void-pointer] + [autohint _FT_Generic] + [extensions _void-pointer] + [internal _void-pointer])) + +(define _FT_Face _FT_FaceRec-pointer) +(provide (struct-out FT_FaceRec) + _FT_FaceRec _FT_FaceRec-pointer) + +(define _full-path + (make-ctype _path + path->complete-path + values)) + +(define-freetype FT_Init_FreeType (_fun (ftl : (_ptr o _FT_Library)) + -> (err : _FT_Error) + -> (if (zero? err) ftl (error 'FT_Init_FreeType)))) + +(define-freetype FT_New_Face (_fun _FT_Library _full-path _FT_Long + (ftf : (_ptr o (_or-null _FT_Face))) + -> (err : _FT_Error) + -> (if (zero? err) ftf (error 'FT_New_Face (format "error ~a" err))))) + +(define-freetype FT_Done_Face (_fun _FT_Face + -> (err : _FT_Error) + -> (unless (zero? err) (error 'FT_Done_Face (format "error ~a" err))))) + +(define-freetype FT_Done_FreeType (_fun _FT_Library -> (err : _FT_Error) -> (if (zero? err) (void) (error 'FT_Done_FreeType)))) + +(define-freetype FT_Get_Kerning (_fun _FT_Face _FT_UInt _FT_UInt _FT_UInt + (ftv : (_ptr o _FT_Vector)) + -> (err : _FT_Error) + -> (if (zero? err) ftv (error 'FT_Get_Kerning (format "error ~a" err))))) + +(define-freetype FT_Get_Char_Index (_fun _FT_Face _FT_ULong + -> _FT_UInt)) + +(define-freetype FT_Load_Glyph (_fun _FT_Face _FT_UInt _FT_Int32 + -> (err : _FT_Error))) + +(define-freetype FT_Load_Char (_fun _FT_Face _FT_ULong _FT_Int32 + -> (err : _FT_Error))) + +(define+provide FT_KERNING_UNSCALED 2) +(define+provide FT_LOAD_DEFAULT 0) +(define+provide FT_LOAD_RENDER (expt 2 2)) +(define+provide FT_LOAD_LINEAR_DESIGN (expt 2 13)) +(define+provide FT_LOAD_NO_RECURSE (expt 2 10)) + + + diff --git a/pitfall/pitfall/measure.rkt b/pitfall/pitfall/measure.rkt new file mode 100644 index 00000000..06aec3da --- /dev/null +++ b/pitfall/pitfall/measure.rkt @@ -0,0 +1,31 @@ +#lang br +(require "freetype-ffi.rkt") +(provide (all-defined-out)) + +(define ft-library (FT_Init_FreeType)) +(define ft-face-cache (make-hash)) + +(define (font-pathstring->ft-face font-pathstring) + (hash-ref! ft-face-cache font-pathstring + (λ () + (unless (file-exists? font-pathstring) + (error 'measure-char (format "font path ~v does not exist" font-pathstring))) + (FT_New_Face ft-library font-pathstring 0)))) + +(define (get-glyph-idx font-pathstring char) + (FT_Get_Char_Index (font-pathstring->ft-face font-pathstring) (char->integer char))) + +(define (measure-char font-pathstring char) + (measure-char-idx font-pathstring (get-glyph-idx font-pathstring char))) + +(define (measure-char-idx font-pathstring glyph-idx) + (define ft-face (font-pathstring->ft-face font-pathstring)) + (FT_Load_Glyph ft-face glyph-idx FT_LOAD_NO_RECURSE) ; loads into FTFace's 'glyph' slot + (define width (FT_Vector-x (FT_GlyphSlotRec-advance (FT_FaceRec-glyph ft-face)))) + width) + + +(module+ test + (require rackunit) + (check-equal? (measure-char "miso.otf" #\f) 296) + (check-equal? (measure-char-idx "miso.otf" 46) 296)) diff --git a/pitfall/pitfall/minimal-embedded-font.rkt b/pitfall/pitfall/minimal-embedded-font.rkt index 530e0c17..cd945919 100644 --- a/pitfall/pitfall/minimal-embedded-font.rkt +++ b/pitfall/pitfall/minimal-embedded-font.rkt @@ -49,7 +49,6 @@ ET 'Type 'Font 'Subtype 'Type1 'Name 'F1 - 'BaseFont 'Helvetica 'FontDescriptor (co-io-ref 9 0))) @@ -69,7 +68,7 @@ ET (co-io 9 0 (make-co-dict 'Type 'FontDescriptor - 'FontName 'Miso + 'FontName 'FiraSansOTLight 'FontFile3 (co-io-ref 10 0) 'Flags 262178 'FontBBox (co-array '(-177 -269 1123 866)) @@ -85,4 +84,4 @@ ET 'AvgWidth 478 'ItalicAngle 0)) -(co-io 10 0 (make-font-co-stream "miso.otf")) +(co-io 10 0 (make-font-co-stream "fira.otf")) diff --git a/pitfall/pitfall/minimal-measured-font.rkt b/pitfall/pitfall/minimal-measured-font.rkt new file mode 100644 index 00000000..1b800ca4 --- /dev/null +++ b/pitfall/pitfall/minimal-measured-font.rkt @@ -0,0 +1,87 @@ +#lang at-exp s-exp pitfall/render + +;; catalog object +(co-io 1 0 (co-catalog #:pages (co-io-ref 2 0))) + +;; pages +(co-io 2 0 (co-pages #:kids (list (co-io-ref 3 0)) + #:count 1)) +;; page +(co-io 3 0 (co-page #:parent (co-io-ref 2 0) + #:mediabox '(0 0 400 400) + #:resources (co-io-ref 4 0) + #:contents (co-io-ref 5 0) + + ; the value of annots must be an array + #:annots (co-array (list (co-io-ref 7 0))) + )) +#;#:annots (co-io-ref 7 0) + +;; resources +(co-io 4 0 + (make-co-dict + 'ProcSet (co-array '(PDF Text)) + 'Font (make-co-dict 'F1 (co-io-ref 6 0)))) + +;; contents +(co-io 5 0 + (make-co-stream + #" +BT +/F1 48 Tf + +(Hello) Tj + +(World) Tj +ET +")) + + +;; font +(co-io 6 0 + (make-co-dict + 'Type 'Font + 'Subtype 'Type1 + 'Name 'F1 + 'BaseFont 'FiraSansOTMedium + 'FontDescriptor (co-io-ref 9 0) + 'FirstChar 0 + 'LastChar 1150 + 'Widths (co-array (for/list ([i (in-range (add1 1150))]) + (define m (measure-char-idx "fira.otf" i)) + (displayln m) + m)) + 'Encoding 'MacRomanEncoding)) + +(co-io 7 0 + (make-co-dict 'Type 'Annot + 'Subtype 'Link + 'Rect (co-array '(100 100 150 125)) + 'A (co-io-ref 8 0))) + + +(co-io 8 0 + (make-co-dict 'Type 'Action + 'S 'URI + 'URI (co-string "http://practicaltypography.com"))) + +(co-io 9 0 + (make-co-dict + 'Type 'FontDescriptor + 'FontName 'FiraSansOTLight + 'FontFile3 (co-io-ref 10 0) + 'Flags 4 + 'FontBBox (co-array '(-177 -269 1123 866)) + 'MissingWidth 255 + 'StemV 105 + 'StemH 45 + 'CapHeight 660 + 'XHeight 394 + 'Ascent 720 + 'Descent -270 + 'Leading 83 + 'MaxWidth 1212 + 'AvgWidth 478 + 'ItalicAngle 0)) + +(co-io 10 0 (make-font-co-stream "fira.otf")) diff --git a/pitfall/pitfall/render.rkt b/pitfall/pitfall/render.rkt index 5871e6dc..ebf0e4fe 100644 --- a/pitfall/pitfall/render.rkt +++ b/pitfall/pitfall/render.rkt @@ -1,10 +1,9 @@ -#lang at-exp racket/base -(require (for-syntax racket/base) - racket/string pitfall/struct br/define racket/bytes sugar/debug racket/format racket/file) +#lang at-exp br +(require racket/string pitfall/struct pitfall/measure br/define racket/bytes sugar/debug racket/format racket/file) (provide (all-defined-out) - (all-from-out pitfall/struct) + (all-from-out pitfall/struct pitfall/measure) file->bytes - (except-out (all-from-out racket/base) #%module-begin)) + (except-out (all-from-out br) #%module-begin)) (define-macro (mb . ARGS) #'(#%module-begin (render-args . ARGS)))