text encoding fixups

This commit is contained in:
Akash Mozumdar 2019-09-09 22:08:24 -04:00
parent b7c9f0bfce
commit 5d77350e3c
3 changed files with 7 additions and 8 deletions

View File

@ -165,7 +165,7 @@ private:
dictionaryWindow.UpdateDictionary();
if (dictionaryWindow.dictionary.empty())
{
std::ofstream(DICTIONARY_SAVE_FILE) << DICTIONARY_INSTRUCTIONS;
std::ofstream(DICTIONARY_SAVE_FILE) << u8"\ufeff" << DICTIONARY_INSTRUCTIONS;
_spawnlp(_P_DETACH, "notepad", "notepad", DICTIONARY_SAVE_FILE, NULL); // show file to user
}
}

View File

@ -113,7 +113,8 @@ BOOL WINAPI DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved
UpdateReplacements();
if (trie.Empty())
{
std::ofstream(REPLACE_SAVE_FILE, std::ios::binary).write((char*)REPLACER_INSTRUCTIONS, wcslen(REPLACER_INSTRUCTIONS) * sizeof(wchar_t));
auto file = std::ofstream(REPLACE_SAVE_FILE, std::ios::binary) << "\xff\xfe";
for (auto ch : std::wstring_view(REPLACER_INSTRUCTIONS)) file << (ch == L'\n' ? std::string_view("\r\0\n", 4) : std::string_view((char*)&ch, 2));
_spawnlp(_P_DETACH, "notepad", "notepad", REPLACE_SAVE_FILE, NULL); // show file to user
}
}

View File

@ -1,6 +1,4 @@
#include "defs.h"
#ifdef _WIN64
#ifdef _WIN64
#define ARCH "x64"
#else
#define ARCH "x86"
@ -121,13 +119,13 @@ Click and drag on window edges to move, or the bottom right corner to resize)";
const char* TOPMOST = u8"Always on top";
const char* DICTIONARY = u8"Dictionary";
const char* DICTIONARY_INSTRUCTIONS = u8R"(This file is used only for the "Dictionary" feature of the Extra Window extension.
It is not meant to be written manually (though it can be).
It uses a custom format specific to Textractor and is not meant to be written manually.
You should look for a dictionary in this format online (https://artikash.github.io/?dictionary is a good place to start).
Alternatively, if you're a programmer, you can write a script to convert a dictionary from another format with the info below.
Once you have a dictionary, to look up some text in Extra Window, select it. All matching definitions will be shown.
Definitions are formatted like this:|TERM|Hola|TERM|hola|TERM|Bonjour|TERM|bonjour|DEFINITION|hello|END|
The definition can include rich text (https://doc.qt.io/qt-5/richtext-html-subset.html) which will be formatted properly.
All text in this file outside of definitions is ignored.
All text in this file outside of a definition is ignored.
Terms longer than 50 characters may not be shown (for performance reasons that should be fixed soon).
This file must be encoded in UTF-8.)";
const char* SHOW_ORIGINAL = u8"Original text";
@ -170,7 +168,7 @@ Replacement commands must be formatted like this:
|ORIG|original_text|BECOMES|replacement_text|END|
All text in this file outside of a replacement command is ignored.
Whitespace in original_text is ignored, but replacement_text can contain spaces, newlines, etc.
This file must be encoded in Unicode (UTF-16 little endian).)";
This file must be encoded in Unicode (UTF-16 Little Endian).)";
const char* THREAD_LINKER = u8"Thread Linker";
const char* LINK = u8"Link";
const char* THREAD_LINK_FROM = u8"Thread number to link from";