Comments (8)
A warning sounds useful. Are these strings case sensitive or not? If not: make sure to take that into account when checking.
from drawbot.
for now there is already a warning when a language
is set which is not available: *** DrawBot warning: Language 'foo' has no hyphenation available. ***
(only while drawing text)
language("foo")
hyphenation(True)
text("bar", (10, 10))
a check is maybe a bit more complex then just looking if the language tag is in that list, fe: nl-be
or fr-CA
, this is the full spec: language-extlang-script-region-variant-extension-privateuse
see
so language()
could draw some dummy text somewhere that produce this warning..
from drawbot.
had to look it up, this could be added while setting language
:
drawbot/drawBot/drawBotDrawingTools.py
Line 1519 in 6697d56
from drawbot.
had to look it up, this could be added while setting language:
But that checks whether there is hyphenation for that language, which may be distinct from "we have a valid language".
from drawbot.
this list all possible options for language(..)
import AppKit
print(AppKit.NSLocale.availableLocaleIdentifiers())
from drawbot.
It may have to be something in this direction:
import AppKit
def isLanguageCodeOk(langCode):
parsedLoc = AppKit.NSLocale.componentsFromLocaleIdentifier_(langCode)
lang = parsedLoc[AppKit.kCFLocaleLanguageCodeKey]
country = parsedLoc.get(AppKit.kCFLocaleCountryCodeKey)
return lang in AppKit.NSLocale.ISOLanguageCodes() and (
country is None or country in AppKit.NSLocale.ISOCountryCodes()
)
for langCode in ["ab", "abk", "abz", "AB", "en-us", "en_us", "EN-US", "en-zz"]:
print(langCode, isLanguageCodeOk(langCode))
Output:
ab True
abk True
abz False
AB True
en-us True
en_us True
EN-US True
en-zz False
from drawbot.
looks good!
strange all en_us
, en-us
and EN-US
are valid
from drawbot.
Or maybe something like this after all:
import AppKit
def canonicalLocaleCode(localeCode):
parsedLoc = AppKit.NSLocale.componentsFromLocaleIdentifier_(localeCode)
parts = [
parsedLoc[AppKit.kCFLocaleLanguageCode],
parsedLoc.get(AppKit.kCFLocaleScriptCode),
parsedLoc.get(AppKit.kCFLocaleCountryCode),
]
return "_".join(part for part in parts if part)
def isLanguageCodeOk(localeCode):
localeCode = canonicalLocaleCode(localeCode)
return localeCode in AppKit.NSLocale.availableLocaleIdentifiers()
for langCode in [
"ab",
"abk",
"abz",
"AB",
"en-us",
"en_us",
"EN-US",
"en-zz",
"sr-cyrl-me",
"en",
]:
print(langCode, isLanguageCodeOk(langCode))
Output:
ab False
abk False
abz False
AB False
en-us True
en_us True
EN-US True
en-zz False
sr_Cyrl_ME True
en True
from drawbot.
Related Issues (20)
- set alpha value
- Internal Links on PDFs generated with DrawBot behave differently on Preview+Safari compared to Acrobat Reader HOT 6
- Formattedstring Strikethrough Attribute HOT 4
- `textBoxCharacterBounds(align="center")` doesnโt seem to work HOT 2
- set CGContextSetAllowsFontSubpixelQuantization to False HOT 1
- font() does not support "dotted" font names, but installedFonts() does return them HOT 6
- variable font is not able to add glyphs by glyphName HOT 17
- ImageObject.opTile() error HOT 3
- ImageObject.dotScreen() not applying to shadow() HOT 2
- Black settings HOT 9
- feature request: full justification
- ImageObject.randomGenerator() yields a constant result HOT 2
- font issue or drawbot issue HOT 7
- Clean up requirements.txt and README.md, pin versions, use dependabot HOT 5
- Can't install noise using the built in pip installer, v3.130 HOT 1
- Some tests fail on macOS 14 HOT 1
- Install Python Packages causes deprecation warning under Python 3.12
- add support for lineDash phase HOT 1
- Remove defconAppKit dependency
- Arabic type settings mixed with Latin characters looks to be wrong HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from drawbot.