Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenfont/intern/blf_font.c22
-rw-r--r--source/blender/blenfont/intern/blf_glyph.c17
-rw-r--r--source/blender/blenfont/intern/blf_internal_types.h6
3 files changed, 24 insertions, 21 deletions
diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c
index c03cdc3d16d..da533820d72 100644
--- a/source/blender/blenfont/intern/blf_font.c
+++ b/source/blender/blenfont/intern/blf_font.c
@@ -34,7 +34,6 @@
#include FT_FREETYPE_H
#include FT_GLYPH_H
-#include FT_ADVANCES_H /* For FT_Get_Advance */
#include "MEM_guardedalloc.h"
@@ -826,7 +825,10 @@ float blf_font_height(FontBLF *font,
float blf_font_fixed_width(FontBLF *font)
{
- return (float)font->fixed_width;
+ GlyphCacheBLF *gc = blf_glyph_cache_acquire(font);
+ float width = (gc) ? (float)gc->fixed_width : font->size / 2.0f;
+ blf_glyph_cache_release(font);
+ return width;
}
static void blf_font_boundbox_foreach_glyph_ex(FontBLF *font,
@@ -1369,22 +1371,6 @@ void blf_font_size(FontBLF *font, float size, unsigned int dpi)
}
blf_glyph_cache_release(font);
-
- /* Set fixed-width size for monospaced output. */
- FT_UInt gindex = FT_Get_Char_Index(font->face, U'0');
- if (gindex) {
- FT_Fixed advance = 0;
- FT_Get_Advance(font->face, gindex, FT_LOAD_NO_HINTING, &advance);
- /* Use CSS 'ch unit' width, advance of zero character. */
- font->fixed_width = (int)(advance >> 16);
- }
- else {
- /* Font does not contain "0" so use CSS fallback of 1/2 of em. */
- font->fixed_width = (int)((font->face->size->metrics.height / 2) >> 6);
- }
- if (font->fixed_width < 1) {
- font->fixed_width = 1;
- }
}
/** \} */
diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c
index b87a784adff..c8cc15e804b 100644
--- a/source/blender/blenfont/intern/blf_glyph.c
+++ b/source/blender/blenfont/intern/blf_glyph.c
@@ -34,6 +34,7 @@
#include FT_GLYPH_H
#include FT_OUTLINE_H
#include FT_BITMAP_H
+#include FT_ADVANCES_H /* For FT_Get_Advance. */
#include "MEM_guardedalloc.h"
@@ -100,6 +101,22 @@ GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font)
memset(gc->glyph_ascii_table, 0, sizeof(gc->glyph_ascii_table));
memset(gc->bucket, 0, sizeof(gc->bucket));
+ /* Determine ideal fixed-width size for monospaced output. */
+ FT_UInt gindex = FT_Get_Char_Index(font->face, U'0');
+ if (gindex) {
+ FT_Fixed advance = 0;
+ FT_Get_Advance(font->face, gindex, FT_LOAD_NO_HINTING, &advance);
+ /* Use CSS 'ch unit' width, advance of zero character. */
+ gc->fixed_width = (int)(advance >> 16);
+ }
+ else {
+ /* Font does not contain "0" so use CSS fallback of 1/2 of em. */
+ gc->fixed_width = (int)((font->face->size->metrics.height / 2) >> 6);
+ }
+ if (gc->fixed_width < 1) {
+ gc->fixed_width = 1;
+ }
+
BLI_addhead(&font->cache, gc);
return gc;
}
diff --git a/source/blender/blenfont/intern/blf_internal_types.h b/source/blender/blenfont/intern/blf_internal_types.h
index 46156edbb1f..c96febd71ae 100644
--- a/source/blender/blenfont/intern/blf_internal_types.h
+++ b/source/blender/blenfont/intern/blf_internal_types.h
@@ -73,6 +73,9 @@ typedef struct GlyphCacheBLF {
bool bold;
bool italic;
+ /* Column width when printing monospaced. */
+ int fixed_width;
+
/* and the glyphs. */
ListBase bucket[257];
@@ -207,9 +210,6 @@ typedef struct FontBLF {
/* font size. */
float size;
- /* Column width when printing monospaced. */
- int fixed_width;
-
/* max texture size. */
int tex_size_max;