[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master 0eb690e: [ftview] Fix charmap cycling.
From: |
Alexei Podtelezhnikov |
Subject: |
[freetype2-demos] master 0eb690e: [ftview] Fix charmap cycling. |
Date: |
Sat, 8 Oct 2016 03:04:32 +0000 (UTC) |
branch: master
commit 0eb690ee171d8408d2f256975ec3723f6c059940
Author: Alexei Podtelezhnikov <address@hidden>
Commit: Alexei Podtelezhnikov <address@hidden>
[ftview] Fix charmap cycling.
* src/ftview.c (event_change_encoding): Reimplement relying on
`cmap_index' field in TFont structure.
---
ChangeLog | 7 +++++++
src/ftview.c | 48 ++++++++++++++++++++++++++++++++++++------------
2 files changed, 43 insertions(+), 12 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 497574b..4e5d2eb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-10-07 Alexei Podtelezhnikov <address@hidden>
+
+ [ftview] Fix charmap cycling.
+
+ * src/ftview.c (event_change_encoding): Reimplement relying on
+ `cmap_index' field in TFont structure.
+
2016-10-05 Alexei Podtelezhnikov <address@hidden>
[ftview] Implement cycling through available charmaps.
diff --git a/src/ftview.c b/src/ftview.c
index 8d46fb7..4889dc8 100644
--- a/src/ftview.c
+++ b/src/ftview.c
@@ -1039,27 +1039,51 @@
static int
event_encoding_change( void )
{
- FT_Face face;
- static int i = 0;
+ PFont font = handle->fonts[status.font_idx];
+ FT_Face face;
+
+
+ if ( status.encoding != FT_ENCODING_NONE )
+ font->cmap_index++;
+ else
+ font->cmap_index = 0;
error = FTC_Manager_LookupFace( handle->cache_manager,
handle->scaler.face_id, &face );
- if ( i < face->num_charmaps )
+ if ( font->cmap_index < face->num_charmaps )
{
- status.encoding = face->charmaps[i]->encoding;
- status.offset = 0x20;
-
- FT_Set_Charmap( face, face->charmaps[i] );
-
- i++;
+ status.encoding = face->charmaps[font->cmap_index]->encoding;
+ status.offset = 0x20;
}
else
{
- status.encoding = 0;
- status.offset = 0;
+ status.encoding = FT_ENCODING_NONE;
+ status.offset = 0;
+ }
- i = 0;
+ switch ( status.encoding )
+ {
+ case FT_ENCODING_NONE:
+ font->num_indices = face->num_glyphs;
+ break;
+
+ case FT_ENCODING_UNICODE:
+ font->num_indices = 0x110000L;
+ break;
+
+ case FT_ENCODING_ADOBE_LATIN_1:
+ case FT_ENCODING_ADOBE_STANDARD:
+ case FT_ENCODING_ADOBE_EXPERT:
+ case FT_ENCODING_ADOBE_CUSTOM:
+ case FT_ENCODING_APPLE_ROMAN:
+ font->num_indices = 0x100L;
+ break;
+
+ /* some fonts use range 0x00-0x100, others have 0xF000-0xF0FF */
+ case FT_ENCODING_MS_SYMBOL:
+ default:
+ font->num_indices = 0x10000L;
}
return 1;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 0eb690e: [ftview] Fix charmap cycling.,
Alexei Podtelezhnikov <=