[Openmcl-devel] glyphs in Cocoa

Arthur Cater arthur.cater at ucd.ie
Mon Feb 27 12:54:56 PST 2023


Kindly indulge any rambling. I’m frustrated by glyphs on mac os x. So many Objective-C methods are deprecated. And I’m so ignorant.

NSGlyphs seem to be integers, in my experience with a Menlo-Regular font the glyph is 29 less than the ascii character code. 
So I wondered (but this isn’t the main thrust of this message) when I came across this in cocoa-editor.lisp whether the use of (char-code #\space) was going to give the appropriate result.

(defun size-of-char-in-font (f)
  (let* ((sf (#/screenFont f))
         (screen-p *use-screen-fonts*))
    (if (%null-ptr-p sf) (setq sf f screen-p nil))
    (let* ((layout (#/autorelease (#/init (#/alloc ns:ns-layout-manager)))))
      (#/setUsesScreenFonts: layout screen-p)
      (values (fround (#/defaultLineHeightForFont: layout sf))
              (fround (ns:ns-size-width (#/advancementForGlyph: sf (char-code #\space))))))))

Also, like so many, #/advancementForGlyph is a deprecated method.

So is #/appendBezierPathWithGlyph:inFont: which is what I’ve found to almost-work for what I want to do. I say almost-work because whenever I’ve used it, and then I quit ccl with cmd-Q, I get the distinctly odd dialog telling me that CCL has unexpectedly quit.

From Apple docs I have the feeling I should be using appendBezierPathWithCGGlyph:inFont:  (note the CG).  but #/appendBezierPathWithCGGlyph:inFont: doesn’t seem to name a function. Is there something special about CG?

Any help appreciated.

Arthur

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.clozure.com/pipermail/openmcl-devel/attachments/20230227/96967a14/attachment.htm>


More information about the Openmcl-devel mailing list