aliftype / reem-kufi Goto Github PK
View Code? Open in Web Editor NEWReem Kufi (كوفي ريم) is a modern kufic typeface
License: SIL Open Font License 1.1
Reem Kufi (كوفي ريم) is a modern kufic typeface
License: SIL Open Font License 1.1
just write الشيخ and take a look at how the letters overlap.
[email protected] reports in https://bugs.chromium.org/p/chromium/issues/detail?id=1170733#c16:
I tried a COLRv1 typeface in Chrome 98 on Mac Big Sur with the flag enabled and it just appears as solid black. https://github.com/aliftype/reem-kufi/blob/colr-v1/ReemKufiInk-Regular.ttf
I checked this font in Font Goggles software and it has a lovely gradient.
My take:
If it looks okay in an older version of FontGoogles before BlackFoundryCom/black-renderer#35 was closed, then it may mean that the reem-kufi font is not produced with the latest spec changes.
It seems to work for me with Chrome built from tip of tree, COLRv1 enabled:
I am not 100% sure what's the expected appearance but this looks like the font is built according to the latest spec and renders ok.
It's still important to use the latest Chrome Canary with the flag enabled. Any older versions are not expected to work 100% robustly.
I really wanted to thank you for this wonderful font, which I now have as my main system font on my phone. It looks incredible! 🤩
I was a little upset by the fact that such a cool font has no Cyrillic support and some time ago I decided to add Cyrillic character support to it, and here are some of my workings:
If you want, I can give you my workings for further polishing, and possibly releasing them as an official. That would be extremely cool!
I installed the latest version of Reem Kufi (Windows 10), but the font itself won't print/appear on screen in Microsoft apps. Windows says that the font is installed (see screenshot 1), but selecting the font in apps just results in what appears to be Arial, in both Word (Screenshot 2) and Paint (Screenshot 3). In Acrobat (Screenshot 4) it actually works.
I checked out your new fonts, and sadly have to report that only the Regular is looking nicely as it should, while the Bold shows a semi-transparent (see joints) black outline. See below.
Please keep this issue open until everything is resolved. Thank you.
Also, the following fontbakery fails are relevant:
>> com.google.fonts/check/smart_dropout
Font enables smart dropout control in "prep" table instructions?
with ReemKufiInk-Bold.ttf
Rationale:
This setup is meant to ensure consistent rendering quality for fonts
across all devices (with different rendering/hinting capabilities).
Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF PUSHW 0x01FF
85 SCANCTRL (unconditinally turn on
dropout control mode)
B0 04 PUSHB 0x04
8D SCANTYPE (enable smart dropout control)
"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
(either vertical or horizontal) is intersected
by both an on-Transition contour and an off-Transition
contour and neither of the pixels was already turned on
by rules 1 and 2, turn on the pixel which is closer to
the midpoint between the on-Transition contour and
off-Transition contour. This is "Smart" dropout control.
For more detailed info (such as other rules not enabled in this snippet),
please refer to the TrueType Instruction Set documentation.
FAIL The 'prep' table does not contain TrueType
instructions enabling smart dropout control. To fix, export the font
with autohinting enabled, or run ttfautohint on the font, or run the
gftools fix-nonhinting script. [code: lacks-smart-dropout]
Result: FAIL
>> com.google.fonts/check/smart_dropout
Font enables smart dropout control in "prep" table instructions?
with ReemKufiInk-Regular.ttf
Rationale:
This setup is meant to ensure consistent rendering quality for fonts
across all devices (with different rendering/hinting capabilities).
Below is the snippet of instructions we expect to see in the fonts:
B8 01 FF PUSHW 0x01FF
85 SCANCTRL (unconditinally turn on
dropout control mode)
B0 04 PUSHB 0x04
8D SCANTYPE (enable smart dropout control)
"Smart dropout control" means activating rules 1, 2 and 5:
Rule 1: If a pixel's center falls within the glyph outline,
that pixel is turned on.
Rule 2: If a contour falls exactly on a pixel's center,
that pixel is turned on.
Rule 5: If a scan line between two adjacent pixel centers
(either vertical or horizontal) is intersected
by both an on-Transition contour and an off-Transition
contour and neither of the pixels was already turned on
by rules 1 and 2, turn on the pixel which is closer to
the midpoint between the on-Transition contour and
off-Transition contour. This is "Smart" dropout control.
For more detailed info (such as other rules not enabled in this snippet),
please refer to the TrueType Instruction Set documentation.
FAIL The 'prep' table does not contain TrueType
instructions enabling smart dropout control. To fix, export the font
with autohinting enabled, or run ttfautohint on the font, or run the
gftools fix-nonhinting script. [code: lacks-smart-dropout]
Result: FAIL
>> com.google.fonts/check/family/win_ascent_and_descent
Checking OS/2 usWinAscent & usWinDescent.
with ReemKufiInk-Bold.ttf
Rationale:
A font's winAscent and winDescent values should be greater than the head
table's yMax, abs(yMin) values. If they are less than these values,
clipping can occur on Windows platforms
(https://github.com/RedHatBrand/Overpass/issues/33).
If the font includes tall/deep writing systems such as Arabic or
Devanagari, the winAscent and winDescent can be greater than the yMax and
abs(yMin) to accommodate vowel marks.
When the win Metrics are significantly greater than the upm, the
linespacing can appear too loose. To counteract this, enabling the OS/2
fsSelection bit 7 (Use_Typo_Metrics), will force Windows to use the OS/2
typo values instead. This means the font developer can control the
linespacing with the typo values, whilst avoiding clipping by setting the
win values to values greater than the yMax and abs(yMin).
FAIL OS/2.usWinDescent value should be equal or greater
than 700, but got 400 instead. [code: descent]
Result: FAIL
>> com.google.fonts/check/valid_glyphnames
Glyph names are all valid?
with ReemKufiInk-Bold.ttf
Rationale:
Microsoft's recommendations for OpenType Fonts states the following:
'NOTE: The PostScript glyph name must be no longer than 31 characters,
include only uppercase or lowercase English letters, European digits, the
period or the underscore, i.e. from the set [A-Za-z0-9_.] and should start
with a letter, except the special glyph name ".notdef" which starts with a
period.'
https://docs.microsoft.com/en-us/typography/opentype/spec/recom#post-table
In practice, though, particularly in modern environments, glyph names can
be as long as 63 characters.
According to the "Adobe Glyph List Specification" available at:
https://github.com/adobe-type-tools/agl-specification
FAIL The following glyph names do not comply with naming
conventions: hamza-ar, highhamza-ar, alef-ar, alef-ar.1, alef-ar.2,
alef-ar.3, alef-ar.fina, alef-ar.fina.Lam, alef-ar.fina.Lam.1,
behDotless-ar and 349 more.
Use -F or --full-lists to disable shortening of long lists.
A glyph name must be entirely comprised of characters from the
following set: A-Z a-z 0-9 .(period) (underscore). A glyph name must
not start with a digit or period. There are a few exceptions such as
the special glyph ".notdef". The glyph names "twocents", "a1", and ""
are all valid, while "2cents" and ".twocents" are not. [code:
found-invalid-names]
Result: FAIL
>> com.google.fonts/check/family/win_ascent_and_descent
Checking OS/2 usWinAscent & usWinDescent.
with ReemKufiInk-Regular.ttf
Rationale:
A font's winAscent and winDescent values should be greater than the head
table's yMax, abs(yMin) values. If they are less than these values,
clipping can occur on Windows platforms
(https://github.com/RedHatBrand/Overpass/issues/33).
If the font includes tall/deep writing systems such as Arabic or
Devanagari, the winAscent and winDescent can be greater than the yMax and
abs(yMin) to accommodate vowel marks.
When the win Metrics are significantly greater than the upm, the
linespacing can appear too loose. To counteract this, enabling the OS/2
fsSelection bit 7 (Use_Typo_Metrics), will force Windows to use the OS/2
typo values instead. This means the font developer can control the
linespacing with the typo values, whilst avoiding clipping by setting the
win values to values greater than the yMax and abs(yMin).
FAIL OS/2.usWinDescent value should be equal or greater
than 700, but got 400 instead. [code: descent]
Result: FAIL
>> com.google.fonts/check/valid_glyphnames
Glyph names are all valid?
with ReemKufiInk-Regular.ttf
Rationale:
Microsoft's recommendations for OpenType Fonts states the following:
'NOTE: The PostScript glyph name must be no longer than 31 characters,
include only uppercase or lowercase English letters, European digits, the
period or the underscore, i.e. from the set [A-Za-z0-9_.] and should start
with a letter, except the special glyph name ".notdef" which starts with a
period.'
https://docs.microsoft.com/en-us/typography/opentype/spec/recom#post-table
In practice, though, particularly in modern environments, glyph names can
be as long as 63 characters.
According to the "Adobe Glyph List Specification" available at:
https://github.com/adobe-type-tools/agl-specification
FAIL The following glyph names do not comply with naming
conventions: hamza-ar, highhamza-ar, alef-ar, alef-ar.1, alef-ar.2,
alef-ar.3, alef-ar.fina, alef-ar.fina.Lam, alef-ar.fina.Lam.1,
behDotless-ar and 388 more.
Use -F or --full-lists to disable shortening of long lists.
A glyph name must be entirely comprised of characters from the
following set: A-Z a-z 0-9 .(period) (underscore). A glyph name must
not start with a digit or period. There are a few exceptions such as
the special glyph ".notdef". The glyph names "twocents", "a1", and ""
are all valid, while "2cents" and ".twocents" are not. [code:
found-invalid-names]
Result: FAIL
I note that the OFL file mentions that the font has a Reserved Font Name, but the line says, 'Reserved Font Name "Josefin Sans".' There is no mention of an RFN in the file name table.
Does the font have an RFN? If so, the OFL.txt file should be updated.
Please add a more descriptive description to the README that describes the design and project in more detail :)
Many commits since last release :)
Basically, I'm trying to make "ReemKufi-Regular.otf" work in Unity on Windows.
I tried adding this font in two methods:
1- Using the default Unity UI + Arabic Support plugin.
2- Using TextMeshPro plugin.
In both cases, however, Reem Kufi doesn't work.
(Reem Kufi compared to Cairo in Unity)
Here's what I think is the issue:
I opened ReemKufi-Regular.otf in FontForge and in FontLab, but none of the main Arabic letters had any unicode hex values. I think these unicode hex values are needed for Unity to display the font.
Notice the question marks in these two images:
Please provide a TTF, needed for web font usage :)
Heads up, in the latest nanoemoji we needed to modify the format of the glyphmap.csv file to accommodate for hybrid vector+bitmap color fonts (with both COLR, OT-SVG and CBDT tables), thus we added a column for the .PNG sources. The expected format is now
svg_file, png_file, glyph_name, codepoints*
Either the first or the second filenames can be left empty depending on whether it's vector-only, bitmap-only or hybrid.
In version 0.004 (version currently hosted on GF), there were Mac records in the nametable. These are missing in 0.6.
I really wanted to thank you for this wonderful font, which I now have as my main system font on my phone. It looks incredible! 🤩
I was a little upset by the fact that such a cool font has no Cyrillic support and some time ago I decided to add Cyrillic character support to it, and here are some of my workings:
If you want, I can give you my workings for further polishing, and possibly releasing them as an official. That would be extremely cool!
Hi Pal,
The font design doesn't have very important three Arabic letters...
ى - (Ya) - Is same as { ي } BUT without dots at the bottom and this letter always come at the end of the word. - Example { أقصى }
ئ - Is same as { ى } BUT it has { Hamza } above - Example { سيئ }
ة - (Circled - Ta) Is same as { ه } BUT it has two dots above - Example { شجرة }
Thanks for your great font.
Me again, sorry.
Please integrate maximum_color
of the nanoemoji
package into your build setup to expand the COLR
table into an SVG
table and provide us with a new binary.
Thank you.
As recently discovered, Windows 10 renders whatever glyph is in GID 1 on top of colored glyphs, see googlefonts/gftools#609.
Therefore we need to update Reem Kufi Fun. Since no one wants to add the NULL glyph in that position as per Microsoft’s outdated specs, it is customary now to put the space character into that position.
I could make a hotfix for the binary font for Google Fonts, but it would be better overall if you incorporated that into your build process and supplied us with a new binary.
Thank you.
I think you might have forgotten to add U+0674 high hamza "ٴ" for Jawi.
Followup for #13.
جربت استخدام الخط في أسماء سور القرآن بحسب الكود الذي وضعته أخي خالد في ملف
build_html.py
لكن واضح أن بعض أسماء السور لم تعرض بصورة صحيحة بسبب غياب بعض المحارف مثل
uni06E1, uni0670, ...
misplaced nuqtas in medial "qaaf"
like in المستقيم صقر سقام
Hi Khaled,
the Ink TTF fonts in this repo don't render als COLRv1 at all, only b/w.
Your build process is too unknown for me to be able to dig in, so I need to ask you to please investigate this and update the files as necessary.
Thank you
felipe@guarana:~/devel/github_felipesanches/reem-kufi$ make ttf
GEN ReemKufi-Regular.ttf
/bin/sh: 1: Syntax error: "(" unexpected
make: *** [ReemKufi-Regular.ttf] Error 2
@khaledhosny The Basmala u+FDFD isn't in the font.
http://www.decodeunicode.org/u+FDFD
It's part of 'Arabic Presentation Forms A' which has common liturgical phrases.
https://en.wikipedia.org/wiki/Arabic_script_in_Unicode
Perhaps you can add it or have the character sequence as an example in the README, as I am not sure how it is written.
For those not knowing what it represents, it's the used in the recitation of the Quran, the arabic phrase means "In the name of God, the Most Gracious, the Most Merciful"
https://en.wikipedia.org/wiki/Basmala
Was trying out the new vowelled version of reem with some sample text and noticed that some were going to high when inside a table and were being cropped. This was with single line spacing
top row is how the vowels looked cropped when scrolling up and down in a document and bottom row is when alt+tabbing into LO from another app.
Josefin Sans was massively updated since it was included into this project, so can be updated :)
Like the Arabic dots.
Assalamualaikum. Hello developer, i'm from indonesia.
I'd like to add some arabic character for writing pegon/jawi arabic, the character is ڮ (ARABIC LETTER KAF WITH THREE DOTS BELOW UNICODE: U+06AE).
Thanks
Some glyphs use rather archaic Kufi variants, but now I think for better usability of the font the defaults should be more modern and the archaic ones be optional.
I have a problem trying to use your font Reem-Kufi,
It's an Embedded project in C.
and I am converting the .ttf font file to .c file using an online converter.
The problem is that I can't find the Arabic Presentation Forms-B Unicode ranges "0xFE70-0xFEFF" In the .ttf file.
This is the range responsible for the different writings of the Arabic letters.
so I am only able to write individual letters
" أ ه ل ا"
not a whole word
"أهلا"
when checking the font.ttf at fontdrop website.
it shows the glyphs but with Unicode none.
where the individual letters have a valid Unicode ranged 0x0600-0x06FF.
The thing is that all of the online websites are able to recognize the font despite that.
all of the screenshots are from the FontDrop website mentioned earlier.
So how does this work?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.