Ali Alzyod
23e8715070
evas_text: reduce Video Memory & RAM needed for text textures (Color Glyphs)
...
Summary:
Texture created for bitmap font glyph, with a fixed size in the font, this size could be much bigger than the needed size in application.
Then a scale factor is applied to these textures when drawn.
Now, instead, we will create smaller bitmaps and create texture from them with reduced texture size (that is not needed).
** This will affect both Video Memory and Ram needed to store glyphs**
Open this file {F3883874} in terminology before and after applying the patch and notice the difference.
Test Plan:
**Notes**
- You need to scroll down to make all glyphs visible, then notice Video/Ram memory
| | Video | Ram
|----------------------|-------|-----
| Before (Font_size=50) | 360 | 300
| After (Font_size=50) | 40 | 100
| Ration After/before | 11% | 33%
**I notice speed up in text rendering for small font size**
```
#include <Elementary.h>
typedef struct _APP
{
Evas_Object *tb1;
Evas_Object *btnLoad;
} APP;
char *text = "<align=center><color=#4DE0FFFF underline=on underline_color=#4DE0FFFF><a href='tel:1234567890'>1234567890</a></color>😀 😁 😂 🤣 😃 😄 😅 😆 😉 😊 😋 😎 😍 😘 😗 😙 😚 ☺🙂 🤗 🤔 😐 😑 😶 🙄 😏 😣 😥 😮 🤐 😯 😪 😫 😴 😌 🤓 😛 😜 😝 🤤 😒 😓 😔 😕 🙃 🤑 😲 ☹🙁 😖 😞 😟 😤 😢 😭 😦 😧 😨 😩 😬 😰 😱 😳 😵 😡 😠 😇 🤠 🤡 🤥 😷 🤒 🤕 🤢 🤧 ☻😈 👿 👹 👺 💀 ☠👻 👽 👾 🤖 💩 😺 😸 😹 😻 😼 😽 🙀 😿 😾 🙈 🙉 🙊 👦 👧 👨 👩 👵 👶 👼 👨⚕️ 👩⚕️ 👨🎓 👩🎓 👨🏫 👩🏫 👨 ⚖👩 ⚖👨🌾 👩🌾 👨🍳 👩🍳 👨🔧 👩🔧 👨🏭 👩🏭 👨💼 👩💼 👨🔬 👩🔬 👨💻 👩💻 👨🎤 👩🎤 👨🎨 👩🎨 👨✈️ 👩✈️ 👨🚀 👩🚀 👨🚒 👩🚒 👮♂️ 👮♀️ 🕵️♂️ 🕵️♀️ 💂♂️ 💂♀️ 👷♂️ 👷♀️ 👳♂️ 👳♀️ 👱♂️ 👱♀️ 🎅 🤶 👸 🤴 👰 🤵 🤰 👲 🙍♂️ 🙍♀️ 🙎♂️ 🙎♀️ 🙅♂️ 🙅♀️ 🙆♂️ 🙆♀️ 💁♂️ 💁♀️ 🙋♂️ 🙋♀️ 🙇♂️ 🙇♀️ 🤦♂️ 🤦♀️ 🤷♂️ 🤷♀️ 💆♂️ 💆♀️ 💇♂️ 💇♀️ 🚶♂️ 🚶♀️ 🏃♂️ 🏃♀️ 💃 🕺 👯♂️ 👯♀️ 🕴🗣👤 👥 👫 👬 👭 💏 💑 👪 👨👩👧 👨👩👧👦 👨👩👦👦 👨👩👧👧 👨👦 👨👦👦 👨👧 👨👧👦 👨👧👧 👩👦 👩👦👦 👩👧 👩👧👦 👩👧👧 💪 🤳 👈 👉 ☝️ 👆 🖕 👇 ✌🤞 🖖 🤘 👊 🖐✋ 👌 👍 👎 ✊ 👊 🤛 🤜 🤚 👋 👏 ✍👐 🙌 🙏 🤝 💅 👂 👃 👣 👀 👁👅 👄 💋 💘 ❤💓 💔 💕 💖 💗 💙 💚 💛 💜 🖤 💝 💞 💟 ❣💌 💤 💢 💣 💥 💦 💨 💫 💬 🗨🗯💭 🕳👓 🕶👔 👕 👖 👗 👘 👙 👚 👛 👜 👝 🛍🎒 👞 👟 👠 👡 👢 👑 👒 🎩 🎓 ⛑📿 💄 💍 💎 🐵 🐒 🦍 🐶 🐕 🐩 🐺 🦊 🐱 🐈 🦁 🐯 🐅 🐆 🐴 🐎 🦌 🦄 🐮 🐂 🐃 🐄 🐷 🐖 🐗 🐽 🐏 🐑 🐐 🐪 🐫 🐘 🦏 🐭 🐁 🐀 🐹 🐰 🐇 🐿🦇 🐻 🐨 🐼 🐾 🦃 🐔 🐓 🐣 🐤 🐥 🐦 🐧 🕊🦅 🦆 🦉 🐸 🐊 🐢 🦎 🐍 🐲 🐉 🐳 🐋 🐬 🐟 🐠 🐡 🦈 🐙 🐚 🦀 🦐 🦑 🦋 🐌 🐛 🐜 🐝 🐞 🕷🕸🦂 💐 🌸 💮 🏵🌹 🥀 🌺 🌻 🌼 🌷 ⚘🌱 🌲 🌳 🌴 🌵 🌾 🌿 ☘🍀 🍁 🍂 🍃 🍇 🍈 🍉 🍊 🍋 🍌 🍍 🍎 🍏 🍐 🍑 🍒 🍓 🍅 🥝 🥑 🍆 🥔 🥕 🌽 🌶🥒 🍄 🥜 🌰 🍞 🥐 🥖 🥞 🧀 🍖 🍗 🥓 🍔 🍟 🍕 🌭 🌮 🌯 🥙 🥚 🍳 🥘 🍲 🥗 🍿 🍱 🍘 🍙 🍚 🍛 🍜 🍝 🍠 🍢 🍣 🍤 🍥 🍡 🍦 🍧 🍨 🍩 🍪 🎂 🍰 🍫 🍬 🍭 🍮 🍯 🍼 🥛 ☕ 🍵 🍶 🍾 🍷 🍸 🍹 🍺 🍻 🥂 🍽🍴 🥄 🔪 🏺 🎃 🎄 🎆 🎇 ✨ 🎈 🎉 🎊 🎋 🎍 🎎 🎏 🎐 🎑 🎀 🎁 🎗🎟🎫 🎖🏆 🏅 🥇 🥈 🥉 ⚽ ️⚾ ️🏀 🏐 🏈 🏉 🎾 🎱 🎳 🏏 🏑 🏒 🏓 🏸 🥊 🥋 🥅 🎯 ⛳ 🏌️♂️ 🏌️♀️ ⛸🎣 🎽 🎿 ⛷🏂 🏄♂️ 🏄♀️ 🏇 🏊♂️ 🏊♀️ ⛹️♂️ ⛹️♀️ 🏋️♂️ 🏋️♀️ 🚴♂️ 🚴♀️ 🚵♂️ 🚵♀️ 🏎🏍🤸♂️ 🤸♀️ 🤼♂️ 🤼♀️ 🤽♂️ 🤽♀️ 🤾♂️ 🤾♀️ 🤺 🤹♂️ 🤹♀️ 🎮 🕹🎲 ♠️ ♥️ ♦️ ♣️ 🃏 🀄 🎴 🌍 🌎 🌏 🌐 🗺🏔⛰🌋 🗻 🏕🏖🏜🏝🏞🏟🏛🏗🏘🏙🏚🏠 🏡 🏢 🏣 🏤 🏥 🏦 🏨 🏩 🏪 🏫 🏬 🏭 🏯 🏰 💒 🗼 🗽 ⛪ 🕌 🕍 ⛩🕋 ⛲ ⛺ 🌁 🌃 🌄 🌅 🌆 🌇 🌉 ⛼♨️ 🌌 🎠 🎡 🎢 💈 🎪 🎭 🖼🎨 🎰 🚂 🚃 🚄 🚅 🚆 🚇 🚈 🚉 🚊 🚝 🚞 🚋 🚌 🚍 🚎 🚐 🚑 🚒 🚓 🚔 🚕 🚖 🚗 🚘 🚙 🚚 🚛 ⛟🚜 🚲 🛴 🛵 🚏 🛣🛤⛽ 🚨 🚥 🚦 🚧 🛑 ⚓ ⛵ 🚣♂️ 🚣♀️ 🛶 🚤 🛳⛴🛥🚢 ✈🛩🛫 🛬 💺 🚁 🚟 🚠 🚡 🚀 🛰🛎🚪 🛌 🛏🛋🚽 🚿 🛀 🛁 ⌛ ⏳ ⌚ ⏰ ⏱⏲🕰🕛 🕧 🕐 🕜 🕑 🕝 🕒 🕞 🕓 🕟 🕔 🕠 🕕 🕡 🕖 🕢 🕗 🕣 🕘 🕤 🕙 🕥 🕚 🕦 🌑 🌒 🌓 🌔 🌕 🌖 🌗 🌘 🌙 🌚 🌛 🌜 🌡☀️ 🌝 🌞 ⭐ 🌟 🌠 ☁️ ⛅ ⛈🌤🌥🌦🌧🌨🌩🌪🌫🌬🌀 🌈 🌂 ☂️ ☔ ⛱⚡ ❄☃️ ⛄ ☄🔥 💧 🌊 🔇 🔈 🔉 🔊 📢 📣 📯 🔔 🔕 🎼 🎵 🎶 🎙🎚🎛🎤 🎧 📻 🎷 🎸 🎹 🎺 🎻 🥁 📱 📲 ☎️ 📞 📟 📠 🔋 🔌 💻 🖥🖨⌨🖱🖲💽 💾 💿 📀 🎥 🎞📽🎬 📺 📷 📸 📹 📼 🔍 🔎 🔬 🔭 📡 🕯💡 🔦 🏮 📔 📕 📖 📗 📘 📙 📚 📓 📒 📃 📜 📄 📰 🗞📑 🔖 🏷💰 💴 💵 💶 💷 💸 💳 💱 💲 ✉📧 📨 📩 📤 📥 📦 📫 📪 📬 📭 📮 🗳✏✒🖋🖊🖌🖍📝 💼 📁 📂 🗂📅 📆 🗒🗓📇 📈 📉 📊 📋 📌 📍 📎 🖇📏 📐 ✂️ 🗃🗄🗑🔒 🔓 🔏 🔐 🔑 🗝🔨 ⛏⚒🛠🗡⚔🔫 🏹 🛡🔧 🔩 ⚙🗜⚗⚖🔗 ⛓💉 💊 🚬 ⚰⚱🗿 🛢🔮 🔮 🏧 🚮 🚰 ♿ 🚹 🚺 🚻 🚼 🚾 🛂 🛃 🛄 🛅 ⚠️ 🚸 ⛔ 🚫 🚳 🚭 🚯 🚱 🚷 📵 🔞 ☢☣⬆️ ↗️ ➡️ ↘️ ⬇️ ↙️ ⬅️ ↖️ ↕️ ↔️ ↩↪⤴️ ⤵️ 🔃 🔄 🔙 🔚 🔛 🔜 🔝 🛐 ⚛🕉✡☸☯️ ☦☮🕎 🔯 ♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ ⛎ 🔀 🔁 🔂 ▶️ ⏩ ⏭⏯◀️ ⏪ ⏮🔼 ⏫ 🔽 ⏬ ⏸⏹⏺⏏🎦 🔅 🔆 📶 📳 📴 ♻️ 📛 ⚜🔰 🔱 ⭕ ✅ ☑✔✖❌ ❎ ➕ ♀️ ♂️ ⚕➖ ➗ ➰ ➿ 〽✳✴❇⁉️ ❓ ❔ ❕ ❗ 〰🔟 💯 🔠 🔡 🔢 🔣 🔤 🅰️ 🆎 ️🅱️ 🆑 ️🆒 ️🆓 ️ℹ🆔 ️Ⓜ️ 🆕 ️🆖 ️🅾️ 🆗 ️🅿️ 🆘 ️🆙 ️🆚 ️🈁 🈂🈷🈶 🈯 🉐 🈹 🈚 🈲 🉑 🈸 🈴 🈳 ㊗㊙🈺 🈵 ▫️ ◻◼◽ ◾ ⬛ ⬜ 🔶 ️🔷 ️🔸 ️🔹 ️🔺 ️🔻 💠 🔘 🔲 🔳 ⚪ ⚫ 🔴 🔵 🏁 🚩 🏴 🏳🏳️🌈 ⚀⚁⚂⚃⚄⚅⛾♾🇦🇨 🇦🇩 🇦🇪 🇦🇫 🇦🇬 🇦🇮 🇦🇱 🇦🇲 🇦🇴 🇦🇶 🇦🇷 🇦🇸 🇦🇹 🇦🇺 🇦🇼 🇦🇽 🇦🇿 🇧🇦 🇧🇧 🇧🇩 🇧🇪 🇧🇫 🇧🇬 🇧🇭 🇧🇮 🇧🇯 🇧🇱 🇧🇲 🇧🇳 🇧🇴 🇧🇶 🇧🇷 🇧🇸 🇧🇹 🇧🇼 🇧🇾 🇧🇿 🇨🇦 🇨🇨 🇨🇩 🇨🇫 🇨🇬 🇨🇭 🇨🇮 🇨🇰 🇨🇱 🇨🇲 🇨🇳 🇨🇴 🇨🇷 🇨🇺 🇨🇻 🇨🇼 🇨🇽 🇨🇾 🇨🇿 🇩🇪 🇩🇯 🇩🇰 🇩🇲 🇩🇴 🇩🇿 🇪🇨 🇪🇪 🇪🇬 🇪🇭 🇪🇷 🇪🇸 🇪🇹 🇪🇺 🇫🇮 🇫🇯 🇫🇰 🇫🇲 🇫🇴 🇫🇷 🇬🇦 🇬🇧 🇬🇩 🇬🇪 🇬🇫 🇬🇬 🇬🇭 🇬🇮 🇬🇱 🇬🇲 🇬🇳 🇬🇵 🇬🇶 🇬🇷 🇬🇸 🇬🇹 🇬🇺 🇬🇼 🇬🇾 🇭🇰 🇭🇲 🇭🇳 🇭🇷 🇭🇹 🇭🇺 🇮🇨 🇮🇩 🇮🇪 🇮🇱 🇮🇲 🇮🇳 🇮🇴 🇮🇶 🇮🇷 🇮🇸 🇮🇹 🇯🇪 🇯🇲 🇯🇴 🇯🇵 🇰🇪 🇰🇬 🇰🇭 🇰🇮 🇰🇲 🇰🇳 🇰🇵 🇰🇷 🇰🇼 🇰🇾 🇰🇿 🇱🇦 🇱🇧 🇱🇨 🇱🇮 🇱🇰 🇱🇷 🇱🇸 🇱🇹 🇱🇺 🇱🇻 🇱🇾 🇲🇦 🇲🇨 🇲🇩 🇲🇪 🇲🇬 🇲🇭 🇲🇰 🇲🇱 🇲🇲 🇲🇳 🇲🇴 🇲🇵 🇲🇶 🇲🇷 🇲🇸 🇲🇹 🇲🇺 🇲🇻 🇲🇼 🇲🇽 🇲🇾 🇲🇿 🇳🇦 🇳🇨 🇳🇪 🇳🇫 🇳🇬 🇳🇮 🇳🇱 🇳🇴 🇳🇵 🇳🇷 🇳🇺 🇳🇿 🇴🇲 🇵🇦 🇵🇪 🇵🇫 🇵🇬 🇵🇭 🇵🇰 🇵🇱 🇵🇲 🇵🇳 🇵🇷 🇵🇸 🇵🇹 🇵🇼 🇵🇾 🇶🇦 🇷🇪 🇷🇴 🇷🇸 🇷🇺 🇷🇼 🇸🇦 🇸🇧 🇸🇨 🇸🇩 🇸🇪 🇸🇬 🇸🇭 🇸🇮 🇸🇰 🇸🇱 🇸🇲 🇸🇳 🇸🇴 🇸🇷 🇸🇸 🇸🇹 🇸🇻 🇸🇽 🇸🇾 🇸🇿 🇹🇦 🇹🇨 🇹🇩 🇹🇫 🇹🇬 🇹🇭 🇹🇯 🇹🇰 🇹🇱 🇹🇲 🇹🇳 🇹🇴 🇹🇷 🇹🇹 🇹🇻 🇹🇼 🇹🇿 🇺🇦 🇺🇬 🇺🇳 🇺🇸 🇺🇾 🇺🇿 🇻🇦 🇻🇨 🇻🇪 🇻🇬 🇻🇮 🇻🇳 🇻🇺 🇼🇫 🇼🇸 🇽🇰 🇾🇪 🇾🇹 🇿🇦 🇿🇲 🇿🇼 8<br/><br/><br/><br/>Sent from my Samsung Galaxy smartphone.</align>";
int font_size = 100;
void _button_clicked(void *data, Evas_Object *obj, void *event_info)
{
APP *app = data;
font_size = font_size - font_size/5;
char buffer[100] = {0};
sprintf(buffer, "DEFAULT='font=NotoColorEmoji font_size=%i color=red ellipsis=-1.0 wrap=mixed'", font_size);
Evas_Textblock_Style *style = evas_textblock_style_new();
evas_textblock_style_set(style, buffer);
evas_object_textblock_style_set(app->tb1, style);
evas_textblock_style_free(style);
sprintf(buffer, "font_size = %i",font_size);
elm_object_text_set(app->btnLoad, buffer);
style = NULL;
}
EAPI_MAIN int
elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
{
APP *app = calloc(1, sizeof(APP));
Evas_Object *win, *scroller1, *scroller2, *box;
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
win = elm_win_util_standard_add("", "");
elm_win_autodel_set(win, EINA_TRUE);
box = elm_box_add(win);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
scroller1 = elm_scroller_add(win);
evas_object_size_hint_weight_set(scroller1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(scroller1, EVAS_HINT_FILL, EVAS_HINT_FILL);
//evas_text_cache_policy_set(EVAS_TEXT_CACHE_POLICY_TEXTURE ,EVAS_TEXT_CACHE_NONE);
app->tb1 = evas_object_textblock_add(win);
Evas_Textblock_Style *style = evas_textblock_style_new();
char buffer[100] = {0};
sprintf(buffer, "DEFAULT='font=NotoColorEmoji font_size=%i color=red ellipsis=-1.0 wrap=mixed'", font_size);
evas_textblock_style_set(style, buffer);
evas_object_textblock_style_set(app->tb1, style);
evas_textblock_style_free(style);
style = NULL;
int w,h;
evas_object_textblock_text_markup_set(app->tb1, "");
evas_object_size_hint_min_set(app->tb1, 360, 720);
elm_object_content_set(scroller1, app->tb1);
elm_box_pack_end(box, scroller1);
elm_object_content_set(win, box);
app->btnLoad = elm_button_add(win);
sprintf(buffer, "font_size = %i",font_size);
elm_object_text_set(app->btnLoad, buffer);
evas_object_smart_callback_add(app->btnLoad, "clicked", _button_clicked, app);
evas_object_show(app->btnLoad);
evas_object_move(app->btnLoad, 0, 20);
evas_object_resize(app->btnLoad, 150, 20);
evas_object_textblock_text_markup_set(app->tb1, text);
evas_object_textblock_size_formatted_get(app->tb1, &w, &h);
evas_object_size_hint_min_set(app->tb1, 800, w/800 + h + 150);
evas_object_resize(win, 800, 800);
evas_object_show(box);
evas_object_show(scroller1);
evas_object_show(scroller2);
evas_object_show(win);
elm_run();
return 0;
}
ELM_MAIN()
```
Reviewers: raster, woohyun, bu5hm4n, zmike, Hermet, segfaultxavi
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8712
Differential Revision: https://phab.enlightenment.org/D11814
2020-05-29 10:10:28 +01:00
Ali Alzyod
2d76224918
evas_object_textblock: add support for variation sequences
...
Summary: update font processing to handle variation sequences unicodes to select proper glypg in respect to variation seqences
Test Plan:
```
#define EFL_EO_API_SUPPORT 1
#define EFL_BETA_API_SUPPORT 1
#include <Eina.h>
#include <Efl.h>
#include <Elementary.h>
EAPI_MAIN int
elm_main(int argc, char **argv)
{
Evas_Object *win, *textblock;
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
win = elm_win_util_standard_add("Main", "");
elm_win_autodel_set(win, EINA_TRUE);
textblock = evas_object_textblock_add(win);
efl_canvas_text_style_set(textblock,NULL,"DEFAULT='font=DejaVuSans font_fallbacks=SamsungColorEmoji color=#000 font_size=20'");
evas_object_textblock_text_markup_set(textblock, "8️⃣☪️AAA☪︎1234567️⃣");
evas_object_size_hint_weight_set(textblock, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(textblock, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(textblock);
evas_object_move(textblock, 0, 0);
evas_object_resize(textblock, 320, 320);
evas_object_resize(win, 320, 320);
evas_object_show(win);
elm_run();
return 0;
}
ELM_MAIN()
```
Reviewers: woohyun, bowonryu, segfaultxavi, cedric, bu5hm4n
Reviewed By: woohyun, cedric
Subscribers: raster, bu5hm4n, subodh6129, herdsman, segfaultxavi, zmike, cedric, #committers, #reviewers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9053
2019-12-12 16:22:12 +09:00
Carsten Haitzler
80d317f20e
evas - revert evas variation sequence support - out of bound accesses
...
This code is filled with out of bounds accesses now after the reverted
patch. All those base_char+1, itr+1 etc. in
evas_common_font_query_run_font_end_get() are accessing BEYOND
the end of the run. textgrid shows this instantly to fall over as it
uses single unicode codepoint chars with no nul terminator. As this
api takes an explicit run_len we should never access beyond the end of
the run_len.
Please revisit this code and keep in mind proper memory/bounds
accessing. If there was ano run_len and it assumed strings were
regular strings that had to be nul terminated... then it might be ok,
but not here.
of course if i put in guards for these +1's then it ends up in
infintie loops, so enough debugging and send it back for a rethink. :)
....
Revert "evas_object_textblock: add support for variation sequences"
This reverts commit 46f2d8acdc
.
2019-10-31 12:31:52 +00:00
Ali Alzyod
46f2d8acdc
evas_object_textblock: add support for variation sequences
...
Summary: update font processing to handle variation sequences unicodes to select proper glypg in respect to variation seqences
Test Plan:
```
#define EFL_EO_API_SUPPORT 1
#define EFL_BETA_API_SUPPORT 1
#include <Eina.h>
#include <Efl.h>
#include <Elementary.h>
EAPI_MAIN int
elm_main(int argc, char **argv)
{
Evas_Object *win, *textblock;
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
win = elm_win_util_standard_add("Main", "");
elm_win_autodel_set(win, EINA_TRUE);
textblock = evas_object_textblock_add(win);
efl_canvas_text_style_set(textblock,NULL,"DEFAULT='font=DejaVuSans font_fallbacks=SamsungColorEmoji color=#000 font_size=20'");
evas_object_textblock_text_markup_set(textblock, "8️⃣☪️AAA☪︎1234567️⃣");
evas_object_size_hint_weight_set(textblock, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(textblock, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(textblock);
evas_object_move(textblock, 0, 0);
evas_object_resize(textblock, 320, 320);
evas_object_resize(win, 320, 320);
evas_object_show(win);
elm_run();
return 0;
}
ELM_MAIN()
```
Reviewers: woohyun, bowonryu, segfaultxavi, cedric, bu5hm4n
Reviewed By: woohyun, cedric
Subscribers: bu5hm4n, subodh6129, herdsman, segfaultxavi, zmike, cedric, #committers, #reviewers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9053
2019-10-19 14:01:36 +09:00
Carsten Haitzler
5f5e95e336
evas - font rendering - dont crash if we have color fonts and gl and sw
...
so if you use sw and gl enignes in a process and have color font
glyphs.. *BOOM* because the color glyph code used ext dat that was
intended for engines to extend with a gotcha of "only 1 engine can
extend this"... commented already.
so this unfortunately adds an extra ptr per glyph to store color data
explicitly. but now it both renders right and doesn't crash. we still
have a limit of 1 engine alone can extend glyphs with ext_dat though.
@fix
2019-08-21 20:02:23 +01:00
Marcel Hollerbach
6883087ac7
Revert "evas_object_textblock: add support for variation sequences"
...
This reverts commit f7ce771e32
.
2019-07-30 19:09:12 +02:00
Ali Alzyod
f7ce771e32
evas_object_textblock: add support for variation sequences
...
update font processing to handle variation sequences unicodes to select proper glypg in respect to variation seqences
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9053
2019-07-29 11:17:35 -07:00
Chris Michael
3862b304b0
evas-common: Remove cserve2 support
...
ref T7226
Depends on D6934
2018-08-30 13:47:27 +09:00
subhransu mohanty
b038d7df25
Remove evas internal dependency from the evas_font module
...
Summary:
dev branch : devs/subhransu/font
The Final goal is to move the evas_font module to ector so that both ector and evas can reuse the code.
make the api simple so that sam eapi can be used by evas_textblock and ector text.
This is the 1st stage to achive that gola, first remove the evas internal dependancy as much as possible before moving to ector library.
Reviewers: jpeg, raster, herdsman, cedric, id213sin
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5419
2017-11-07 11:34:53 +09:00
Jean-Philippe Andre
ca581e00ba
evas: Implement support for different H/V font DPI
...
This is modifying how a rarely used environment variable that sets the
DPI used for font sizing is parsed. The previous form remains valid, of
course. Note that EFL tends to use "scaling" instead of this DPI. The
font DPI is useful for me to open up a terminology window with almost
the same size as my IDE's code viewer.
Use case:
export EVAS_FONT_DPI=95x94 terminology
Note:
I still don't get a 1:1 match with Qt's rendering, and in fact
94x95 works better than what 95x94 (which is reported by xdpyinfo).
Interesting though :)
@feature
2017-10-12 15:25:05 +09:00
Carsten Haitzler
e095562ea1
evas font loading - fix possible divide by 0 when font size is 0
...
fix coverity CID 1381446
2017-09-28 15:28:00 +09:00
Youngbok Shin
1750410650
evas: Add scale feature for embedded bitmap fonts.
...
Summary:
When evas selects a strike of embedded bitmap font,
calculate ratio and use it for scaling embedded bitmap.
@feature
Reviewers: jpeg, tasn, woohyun, raster, herdsman
Reviewed By: raster
Subscribers: charlesmilette, Francesco149, cedric
Differential Revision: https://phab.enlightenment.org/D2713
2017-09-26 11:31:31 +09:00
Carsten Haitzler
af4c3c0fe1
evas gl - fix leak with font glyph textures
...
some font glyphs are still allocated after tyhe last gl window is
freed which means we can't make current anymore to free textures after
that. this fixes that by flushing gl texture info from the font cache
when the last gl windows are gone.
@fix
2016-04-12 12:47:30 +09:00
Youngbok Shin
e197f8804f
evas: Support bitmap embedded color font.
...
Summary:
Add the code for getting bitmap buffers from embedded color font,
And draw the bitmap buffers as images.
For drawing the bitmap buffers as images,
evas_common_draw_context_font_ext_set internal API is changed to
pass additional gl engine functions.
T2139
@feature
Test Plan:
1. Set a bitmap embedded color font to textblock.
2. Set a unicode emoticon text.
3. See the result.
Please check the sample unicode in the following link.
http://www.fileformat.info/info/unicode/char/1f3af/index.htm
http://www.fileformat.info/info/unicode/char/1f555/index.htm
http://www.fileformat.info/info/unicode/char/2600/index.htm
http://www.fileformat.info/info/unicode/char/263a/index.htm
Reviewers: tasn, woohyun, jpeg, raster
Reviewed By: raster
Subscribers: herdsman, cedric
Differential Revision: https://phab.enlightenment.org/D2084
2015-03-19 19:02:03 +09:00
Cedric BAIL
d3bc06ae33
evas: simplify path logic and make backend code more robust.
...
Fix CID 1039665.
2014-03-13 10:57:38 +09:00
Carsten Haitzler
fc7fde97a2
evas - remove dead code (comment it out)
...
removes entirely dead code and keeps it for reference only
2014-01-10 18:48:42 +09:00
Carsten Haitzler
c12ac143c6
fix freetype header includes to be correct where ft 2.5.1 breaks builds
...
this should fix T591
2013-12-01 12:16:28 +09:00
Cedric Bail
e551f88a09
evas: Let fix the mess in our header instead of sweeping it under the carpet.
...
This also does fix the build on Windows.
This reverts commit 86c08e6985
.
2013-11-22 11:06:07 +09:00
Tom Hacohen
86c08e6985
Revert "evas: this headers order are seriously insane..."
...
Perhaps they are insane, but as the comments imply it defines
USE_HARFBUZZ which is needed afterwards. You just broke everything. I
know it's a mess there, but it's a mess that works. Your change doesn't.
This reverts commit d4b9e3b287
.
2013-11-21 10:55:37 +00:00
Cedric Bail
d4b9e3b287
evas: this headers order are seriously insane, hope that one fix the last breakage.
2013-11-21 18:26:29 +09:00
Chris Michael
a9d0f3a919
Fix missing FTUNLOCK
...
Since we locked the font_draw mutex earlier, we should unlock it
before we return.
NB: Fixes Coverity CID1039382
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-08 14:15:41 +01:00
Chris Michael
a231b7ed26
Fix formatting
...
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-08 14:15:24 +01:00
Jean-Philippe Andre
1f298139d8
evas: fix crash after font rehint
2013-06-24 14:52:54 +02:00
Sebastian Dransfeld
336f6ec328
efl: formatting
2013-06-20 13:28:18 +02:00
Sebastian Dransfeld
51023d2d4f
evas: Keep sane name for public header
...
Evas_Common.h should be used for the public header, and rather rename
evas_common.h internal header to another name.
Sa:
Evas_Common_Header.h -> Evas_Common.h
evas_common.h -> evas_common_private.h
Shouldn't have both Evas_Common.h and evas_common.h because of case
insensitive filesystems.
2013-06-20 12:53:29 +02:00
Jean-Philippe Andre
d2c3b67a72
cserve2: fix minor memleaks with fonts
...
Leaks happen when fonts fail to load
2013-06-20 17:42:07 +09:00
Daniel Willmann
c1cba92f8b
evas_font_load: Remove duplicate include of evas_font_ot.h
...
Because it defines USE_HARFBUZZ we need to include it before testing for
this define.
Signed-off-by: Daniel Willmann <d.willmann@samsung.com>
2013-06-06 10:54:57 +01:00
Tom Hacohen
0d1ba652f0
Evas font: Fixed hb_font_destroy related warning.
...
Thanks to Daniel Willmann.
2013-06-06 10:42:06 +01:00
Jean-Philippe Andre
e973be52f9
evas/cserve2: fix memory leak when changing font hinting.
...
Signed-off-by: Cedric Bail <cedric.bail@samsung.com>
2013-06-04 20:21:15 +09:00
Jiyoun Park
810f1ca972
Evas font: fix font source have wrong current size.
2013-04-05 13:05:25 +09:00
Tom Hacohen
2da15ced65
Evas font: Disable run-time emboldment in some cases.
...
If OS/2 table is available and the font is demi-bold, don't do runtime
emboldment.
2013-04-04 16:05:42 +01:00
Tom Hacohen
c8e1fe4c9f
Evas font: Add missing header.
...
SVN revision: 82826
2013-01-15 17:15:06 +00:00
Paulo Alcantara
cf46337e17
efl/font: Dispatch font load request once sent to server
...
Patch by: Paulo Alcantara <pcacjr@profusion.mobi>
SVN revision: 82482
2013-01-09 21:37:34 +00:00
Vincent Torri
c15e9c6575
merge: and now Evas
...
I've tested make -j 3 install and it works nicely
I've tested expedite with software and opengl xlib,
and it works. Not tested other engines, so please
report any problems (engines or other) on the ML.
TODO: examples and tests, I'll add them later
ISSUE: Eina_Unicode size check. It indirectly depends on
eina_config.h, which is created at the end of the
configure script. So its size is always 0. I don't
know how that size is used, so I can't do a lot,
for now.
SVN revision: 78895
2012-11-04 11:51:42 +00:00