Fixes#2789.
The Keyboard Fonts dialog skipped some fonts which it did not recognise
as valid TrueType fonts. As a bonus, I've rewritten a few parts of it to
make it significantly faster to load.
I also turned off the font formatting for the list, as it was not very
helpful and hurt performance considerably.
Fixes#4278.
When Keyman Developer is installed without Keyman for Windows, the
program silently crashes, because it is looking for libcef.dll in the
Keyman Desktop install folder rather than using its own copy of it.
This improves the search for libcef.dll and kmbrowserhost.exe, and
includes kmbrowserhost.exe with the Keyman Developer installation.
In the future, we could consider moving kmbrowserhost.exe into a common
folder (perhaps when we split Keyman for Windows and Keyman Developer
projects in 15.0).
I threw in a one-liner addressing a deprecated function warning in the
Developer build.
We have a `g_debug_ToConsole` variable. However, so far this was
always set to true and output to `syslog`. This change modifies
the default to `false`, and in that case logs to `syslog`. If
`g_debug_ToConsole` is true we no output to the console.
When running the KMX unit tests we set `g_debug_ToConsole` to true.
Fixes#3011.
Keys that have only whitespace will no longer generate separate key data
for the on screen keyboard, as they have no visual presentation anyway.
Fixes#2998.
Three parts to this:
* The package compiler will now give a warning if a keyboard in a
package does not contain any language metadata.
* Removed old canonicalization check during compile which is now handled
better in `TPackageInfoRefreshKeyboards`.
* Reduced non-canonical BCP 47 tag warnings in
`TPackageInfoRefreshKeyboards` to "info" so they do not block the
build.
Point 3 above is one part of the outcome of our BCP 47 discussion at:
https://docs.google.com/document/d/1N5CkTX7tlLlmUB9Mbd-LblY1ch1e642XxlTasC_WE_Q/edit#heading=h.fiy983iliay5
Fixes#3337.
In some situations, the wordlist editor was not tracking modified state
100% correctly, which meant that edits could be lost. This resolves that
by simplifying the modification state tracking.
Fixes#2556.
This adds support for `isRTL`, `insertAfterWord`, and
`quotesForKeepSuggestions` punctuation options for lexical models, both
in the parsing and in the user interface. A number of options are
presented to the user for the quotes and word breaking characters.
The parser continues to be a regex-based typescriptish parser. Expect it
to be gross. It's too big a job to do properly right now, so it is
somewhat limited and will bail if it finds structures it can't
understand.
I would hope to use something a bit smarter in the future to interface
with the editor. Probably when we are actually fully web-based and can
depend on a Typescript compiler directly.
Please don't get mad at me! 😟😟😟
Fixes#2740.
The definitions for several of the combined modifiers was incorrect,
which led to a mismatch when attempting to import those layers from a
visual keyboard into the touch layout editor.
Fixes#3199.
Ensures that the model package compiler passes schema validation for
kmp.json. Three problems were corrected:
1. `followKeyboardVersion` is a source-only property; it should not be
in deployable kmp.json.
2. `copyLocation` should have been a number not a string (in XML
everything is a string... but JSON has more control here)
3. `fileType` is a source-only property; it also should not be in
deployable kmp.json.
I have checked that the resulting files validate against the package
kmp.json schema version 1.1.0 defined at
https://github.com/keymanapp/api.keyman.com/blob/master/schemas/package/1.1.0/package.json.
None of these fixes should impact the use of these packages in target
apps. `followKeyboardVersion` and `fileType` are used only in the source
at package development time, and `copyLocation` is unused (and should be
eliminated from Keyman altogether in the future).
Fixes#4423.
Using a named character constant with a store name that included
characters outside ascii could cause kmcmpdll to crash with an assertion
failure.
This fix allows store names defined in the .kmn file to use characters
outside ascii.
Note that more work needs to be done on which characters are acceptable
to use, as this is somewhat implementation-specific according to the C++
specification for `iswalpha`.
Added a test case to verify various named code constant examples.
Also removes dead code for `IsCJKUnifiedIdeograph` as this was never
used and somewhat pointless in any case.
NamedCodeConstants.cpp could stand to be rewritten using `std::map` or
equivalent. Current implementation is pretty icky.