From 3760d3d71913774907e7bcde7f98e104b79d47c1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 14 Jan 2017 09:32:55 +0530 Subject: [PATCH] Also make the postscript name available --- kitty/core_text.m | 10 ++++++---- kitty/fonts/core_text.py | 8 +++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/kitty/core_text.m b/kitty/core_text.m index b6643fb5c..0704f6e3d 100644 --- a/kitty/core_text.m +++ b/kitty/core_text.m @@ -20,7 +20,7 @@ typedef struct { unsigned int units_per_em; float ascent, descent, leading, underline_position, underline_thickness, point_sz, scaled_point_sz; CTFontRef font; - PyObject *family_name, *full_name; + PyObject *family_name, *full_name, *postscript_name; } Face; @@ -62,10 +62,11 @@ new(PyTypeObject *type, PyObject *args, PyObject UNUSED *kwds) { self->leading = CTFontGetLeading(self->font); self->underline_position = CTFontGetUnderlinePosition(self->font); self->underline_thickness = CTFontGetUnderlineThickness(self->font); + self->scaled_point_sz = CTFontGetSize(self->font); self->family_name = convert_cfstring(CTFontCopyFamilyName(self->font)); self->full_name = convert_cfstring(CTFontCopyFullName(self->font)); - self->scaled_point_sz = CTFontGetSize(self->font); - if (self->family_name == NULL || self->full_name == NULL) { Py_CLEAR(self); } + self->postscript_name = convert_cfstring(CTFontCopyPostScriptName(self->font)); + if (self->family_name == NULL || self->full_name == NULL || self->postscript_name == NULL) { Py_CLEAR(self); } } } else { Py_CLEAR(self); @@ -80,7 +81,7 @@ new(PyTypeObject *type, PyObject *args, PyObject UNUSED *kwds) { static void dealloc(Face* self) { if (self->font) CFRelease(self->font); - Py_CLEAR(self->family_name); Py_CLEAR(self->full_name); + Py_CLEAR(self->family_name); Py_CLEAR(self->full_name); Py_CLEAR(self->postscript_name); Py_TYPE(self)->tp_free((PyObject*)self); } @@ -200,6 +201,7 @@ static PyMemberDef members[] = { MEM(underline_thickness, T_FLOAT), MEM(family_name, T_OBJECT), MEM(full_name, T_OBJECT), + MEM(postscript_name, T_OBJECT), {NULL} /* Sentinel */ }; diff --git a/kitty/fonts/core_text.py b/kitty/fonts/core_text.py index 0d19f097e..14c37cfc3 100644 --- a/kitty/fonts/core_text.py +++ b/kitty/fonts/core_text.py @@ -64,17 +64,19 @@ def render_cell(text=' ', bold=False, italic=False): return first, second -def develop(sz=288): +def develop(family='monospace', sz=288): import pickle from .render import render_string + from kitty.fast_data_types import glfw_init import os + glfw_init() try: os.remove('/tmp/cell.data') except EnvironmentError: pass - set_font_family('monospace', sz, ignore_dpi_failure=True) + set_font_family(family, sz, ignore_dpi_failure=True) for (bold, italic), face in main_font.items(): - print('bold: {} italic: {} family:{} full name: {}'.format(bold, italic, face.family_name, face.full_name)) + print('bold: {} italic: {} family:{} full name: {} postscript_name: {}'.format(bold, italic, face.family_name, face.full_name, face.postscript_name)) f = main_font[(False, False)] for attr in 'units_per_em ascent descent leading underline_position underline_thickness scaled_point_sz'.split(): print(attr, getattr(f, attr))