From ffc8fbe3661781475518aff476ce6c303ce5edc8 Mon Sep 17 00:00:00 2001 From: Waqar Ahmed Date: Wed, 8 Dec 2021 21:53:34 +0500 Subject: [PATCH] Optimize Character::width for ascii/ < 256 cases This runs much faster. - Avoids table lookup - Allows inlined method to be more useful --- src/characters/Character.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/characters/Character.h b/src/characters/Character.h index 3b5b5a62..bfe2d2e6 100644 --- a/src/characters/Character.h +++ b/src/characters/Character.h @@ -138,6 +138,21 @@ public: static int width(uint ucs4) { + // ASCII + if (ucs4 >= 0x20 && ucs4 < 0x7f) + return 1; + + if (ucs4 >= 0xA0 && ucs4 <= 0xFF) + return 1; + + // NULL + if (ucs4 == 0) + return 0; + + // Control chars + if ((ucs4 > 0x0 && ucs4 < 0x20) || (ucs4 >= 0x7F && ucs4 < 0xA0)) + return -1; + return characterWidth(ucs4); }