emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Building the igc branch on MS-Windows


From: Gerd Möllmann
Subject: Re: Building the igc branch on MS-Windows
Date: Sat, 27 Apr 2024 18:37:12 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

Gerd Möllmann <gerd.moellmann@gmail.com> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> From: Gerd Möllmann <gerd.moellmann@gmail.com>
>>> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
>>> Date: Sat, 27 Apr 2024 17:29:44 +0200
>>> 
>>> Helmut Eller <eller.helmut@gmail.com> writes:
>>> 
>>> >> But its contents are weird
>>> >
>>> > In pdumper:
>>> >
>>> >       /* There are three kinds of font objects that all use PVEC_FONT,
>>> >          distinguished by their size.  Font specs and entities are
>>> >          harmless data carriers that we can dump like other Lisp
>>> >          objects.  Fonts themselves are window-system-specific and
>>> >          need to be recreated on each startup.  */
>>> >
>>> > could this be the reason?
>>> 
>>> I think I spider. Unbelievable. Whoever did that should be shot. No
>>> that's too mild. He shall use Visual C++ for one year :-).
>>> 
>>> Good catch! Thanks Helmut!
>>
>> There's more, I think.  font.h says this near the end of 'struct font':
>>
>>     /* Font-driver for the font.  */
>>     struct font_driver const *driver;
>>
>>     /* There are more members in this structure, but they are private
>>        to the font-driver.  */
>>   };
>>
>> And indeed, w32font.h does this:
>>
>>   /* The actual structure for a w32 font, that can be cast to struct font.
>>      The Uniscribe backend extends this.  */
>>   struct w32font_info
>>   {
>>     struct font font;
>>     TEXTMETRICW metrics;
>>     unsigned int glyph_idx;
>>     struct w32_metric_cache **cached_metrics;
>>     int n_cache_blocks;
>>     HFONT hfont;
>>   };
>>
>> And then w32uniscribe.c does
>>
>>   /* Extension of w32font_info used by Uniscribe and HarfBuzz backends.  */
>>   struct uniscribe_font_info
>>   {
>>     struct w32font_info w32_font;
>>     /* This is used by the Uniscribe backend as a pointer to the script
>>        cache, and by the HarfBuzz backend as a pointer to a hb_font_t
>>        object.  */
>>     void *cache;
>>     /* This is used by the HarfBuzz backend to store the font scale.  */
>>     double scale;
>>   };
>
> And
>
> #ifdef NS_IMPL_GNUSTEP
> /* this extends font backend font */
> struct nsfont_info
> {
>   struct font font;
>
>   char *name;  /* PostScript name, uniquely identifies on NS systems */
>
>   /* The following metrics are stored as float rather than int.  */
>
>   float width;  /* Maximum advance for the font.  */
>   float height;
>   float underpos;
>   float underwidth;
>   float size;
> #ifdef __OBJC__
>   NSFont *nsfont;
> #else /* ! OBJC */
>   void *nsfont;
> #endif
>   char bold, ital;  /* convenience flags */
>   char synthItal;
>   XCharStruct max_bounds;
>   /* We compute glyph codes and metrics on-demand in blocks of 256 indexed
>      by hibyte, lobyte.  */
>   unsigned int **glyphs; /* map Unicode index to glyph */
>   struct font_metrics **metrics;
> };
> #endif

I have randomly reverted and reapplied commits and fix_font is gone
again. Sorry for the chaos, seems I'm a bit tired.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]