Re: glyphs in Cocoa

Arthur Cater <[email protected]>
Newsgroups gmane.lisp.openmcl.devel
Message-ID <[email protected]>
Thanks, I will look at those. I’m converting character outlines to SVG Polylines to drive a laser cutter that doesn’t properly understand <text> tags.

> On 27 Feb 2023, at 21:22, R. Matthew Emerson <[email protected]> wrote:
> 
> 
> 
>> On Feb 27, 2023, at 12:54 PM, Arthur Cater <[email protected]> wrote:
>> 
>> 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.
> 
> I’m not sure what you’re trying to do, but perhaps you could operate more easily at the
> Core Text level.
> 
> Take a look at CTFontGetGlyphWithName and CTFontCreatePathForGlyph.
> 
> (#_CTFontCreateWithName #@"LucidaGrande" (cg:cgfloat 8) +null-ptr+)
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.