diff --git a/ChangeLog b/ChangeLog index 84401301..f6b92316 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3774 +1,3778 @@ +2020-04-12 Robby Stephenson + + * Updated ISO-5426 converter. + 2020-04-05 Robby Stephenson * Updated z3950fetcher to separate query and response character encoding (Bug 419670). 2020-03-28 Robby Stephenson * Improved audio file data importer to use Album Artist (Bug 419348). * Added notification if user agent is diabled and data source requires it (Bug 419319). 2020-02-28 Robby Stephenson * Updated data source endpoint for TheGamesDB.net. 2020-02-26 Robby Stephenson * Fixed bug with writing invalid XML names (Bug 418067). 2020-02-15 Robby Stephenson * Updated Amazon data source to PA-API v5. 2020-01-25 Robby Stephenson * Improved MobyGames fetcher (Bug 416718). 2019-12-10 Robby Stephenson * Added data source for colnect.net. 2019-11-25 Robby Stephenson * Fixed performance regression when loading data file. * Released Tellico 3.2.3. 2019-11-09 Robby Stephenson * Released Tellico 3.2.2. 2019-10-20 Robby Stephenson * Fixed bug to revert to behavior of selecting newly added entries (Bug 413217). 2019-10-06 Robby Stephenson * Added importer for LibraryThing.com JSON collection files (Bug 411095). 2019-08-04 Robby Stephenson * Fixed bug with calculating relative file links (Bug 410551). 2019-07-09 Robby Stephenson * Released Tellico 3.2.1. 2019-07-06 Robby Stephenson * Fixed selection bug when modifying an entry after selection changed (Bug 391614). 2019-07-01 Robby Stephenson * Fixed bug with not updating status bar when cancelling an entry update (Bug 325591). 2019-06-16 Robby Stephenson * Fixed file preview generation. * Added data source for Kino-Teatr.ua. 2019-05-25 Robby Stephenson * Released Tellico 3.2. 2019-05-24 Robby Stephenson * Updated data source for TheGamesDB.net (Bug 407811). 2019-04-18 Robby Stephenson * Added data source for ComicVine.com. 2019-03-10 Robby Stephenson * Updated VNDB.org data source. 2019-02-24 Robby Stephenson * Corrected server for National Library of Lithuania (Bug 404743). 2019-02-20 Robby Stephenson * Added data source for MobyGames.com. 2019-02-14 Robby Stephenson * Updated IGDB data source to API v3. 2019-02-10 Robby Stephenson * Improved collection merging efficiency (Bug 349410). 2019-01-19 Robby Stephenson * Fixed bug reading title from KinoPoisk (Bug 403184). 2019-01-04 Robby Stephenson * Fixed bug with setting IMDB rating in various locales (Bug 401894). 2019-01-02 Robby Stephenson * Added Amazon sites for BR, AU, IN, MX, and TR. 2018-12-18 Robby Stephenson * Released Tellico 3.1.4. 2018-12-17 Robby Stephenson * Updated Kino.de data source. 2018-12-09 Robby Stephenson * Updated KinoPoisk.ru data source. 2018-10-30 Robby Stephenson * Updated bedetheque.com data source to use https. 2018-10-24 Robby Stephenson * Fixed bug to escape the group name when filtering in the Group View (Bug 399928). 2018-10-02 Robby Stephenson * Fixed bug when using a regular expression for filtering in a number field (Bug 399323). 2018-09-02 Robby Stephenson * Released Tellico 3.1.3. * Updated TheGamesDB data source. 2018-08-24 Robby Stephenson * Updated Amazon source to include multiple content listings in movie plots (Bug 396211). 2018-08-22 Robby Stephenson * Fixed LTR direction for year within Video template (Debian Bug #904259) 2018-07-08 Robby Stephenson * Fixed bug that cleared selection on modification when a filter was applied (Bug 394343). 2018-07-02 Robby Stephenson * Updated SRU fetcher to allow multiple marc records within a SRW result (DNB). 2018-04-18 Robby Stephenson * Updated IMDb data source (Bug 393239). 2018-04-02 Robby Stephenson * Updated BibTeXML importer. 2018-03-28 Robby Stephenson * Fixed compilation for Qt 5.6 (Bug 392457). 2018-03-28 Robby Stephenson * Released Tellico 3.1.2. * Updated Kino.de data source. 2018-03-18 Robby Stephenson * Fixed bug with inconsistent selection (Bug 391614). * Added a workaround for a crash when linking to both Exempi and KFileMetadata. 2018-02-24 Robby Stephenson * Updated IMDb data source. 2018-02-07 Robby Stephenson * Updated ISBNdb.com data source to v3. 2018-02-05 Robby Stephenson * Fixed "Filter by Group" (Bug 389931). 2018-01-30 Robby Stephenson * Updated MusicBrainz data source to Web Service v2. 2018-01-15 Robby Stephenson * Released Tellico 3.1.1. * Removed deprecated Wine.com data source. 2018-01-14 Robby Stephenson * Updated Kino.de data source. * Updated IGDB data source. 2018-01-09 Robby Stephenson * Fixed bug with OMDB settings not being saved (Bug 388703). * Updated IMDb data source. 2017-12-15 Robby Stephenson * Revert change to clear search dialog on new search (Bug 357799). 2017-11-19 Robby Stephenson * Fixed bug with filter selection (Bug 387130). 2017-11-17 Robby Stephenson * Fixed bug with multi-selection and entry editing (Bug 387053). 2017-11-12 Robby Stephenson * Fixed bug with incorrect entry titles in icon view and multiple entry icons (Bug 386548). * Fixed a few ISO-6937 character encodings. 2017-11-06 Robby Stephenson * Fixed bug for "losing" icons after modifying a collection (Bug 386549). 2017-11-02 Robby Stephenson * Fixed bug with duplicated colons in CSV importer (Bug 386483). 2017-11-01 Robby Stephenson * Improved "Filter by Group" to use a regular expression (Bug 386011). 2017-10-14 Robby Stephenson * Updated Goodreads importer to use https endpoint. 2017-10-13 Robby Stephenson * Released Tellico 3.1. 2017-09-20 Robby Stephenson * Fixed crashing bugs with remote image loading (Bug 382572, Bug 379607, Bug 384104). 2017-09-10 Robby Stephenson * Fixed bug with showing stars in column view for float values (Bug 384547). * Fixed bug with comparing float values (Bug 384547). 2017-08-26 Robby Stephenson * Fixed building with CMake 3.9+ (Bug 382680). 2017-07-16 Robby Stephenson * Added data source for kino.de. 2017-07-07 Robby Stephenson * Added message dialog for Amazon Associate warning (Bug 364784). 2017-07-06 Robby Stephenson * Added DBUS option for filtering exported entries (Bug 382035). 2017-07-02 Robby Stephenson * Fixed bug of running out of memory when writing very large XML files (Bug 380832). * Improved performance for filtering large collections by avoiding needless field value formatting. 2017-06-22 Robby Stephenson * Fixed bug with some icons not being shown (Bug 378477). 2017-05-29 Robby Stephenson * Switched from using libdiscid to libcdio, which includes cdtext. 2017-05-06 Robby Stephenson * Removed Freebase data source. 2017-05-01 Robby Stephenson * Fixed track length for CD audio (Bug 379426). 2017-04-30 Robby Stephenson * Added data source for IGDB.com. 2017-04-16 Robby Stephenson * Fixed bug showing icons for custom collection (Bug 378852). 2017-04-09 Robby Stephenson * Added data source for https://opensource.dbc.dk. * Added PEGI rating to GiantBomb results (Bug 375996). 2017-03-27 Robby Stephenson * Released Tellico 3.0.2. 2017-03-26 Robby Stephenson * Added data source for VideoGameGeek.com 2017-03-25 Robby Stephenson * Updated Douban data source to API v2 (from XML to JSON). 2017-03-24 Robby Stephenson * Fixed bug with image location for reports, introduced in v3.0.1 (Bug 377790). 2017-03-16 Robby Stephenson * Updated the IBS.it data source (Bug 373774). 2017-03-11 Robby Stephenson * Added data source for KinoPoisk.ru. 2017-03-04 Robby Stephenson * Added data source for OMDBAPI.com. 2017-02-20 Robby Stephenson * Released Tellico 3.0.1. 2017-02-12 Robby Stephenson * Removed Microsoft Academic Search data source (defunct). * Updated DBLP data source. 2017-02-08 Robby Stephenson * Fixed relative file locations in HTML export (Bug 376134). 2017-02-05 Robby Stephenson * Fixed image open dialog to remember last location (Bug 376002). * Added ESRB rating for "Everyone 10+" (Bug 375995). 2017-01-30 Robby Stephenson * Fixed Bibsys z39.50 settings (Bug 375758). * Fixed "Report Bug" menu item to link to bugs.kde.org (Bug 375760). * Update MARCXML2MODS stylesheet to version 3.6. 2017-01-29 Robby Stephenson * Fixed Google Scholar data source. 2017-01-15 Robby Stephenson * Fixed bug with Rating drawing size in list view (Bug 372560). 2016-12-19 Robby Stephenson * Fixed bug with truncated first two characters of root folder when importing a file listing (Bug 373918). 2016-11-08 Robby Stephenson * Released Tellico 3.0. 2016-06-15 Robby Stephenson * Added native data source for Bedetheque.com 2016-05-25 Robby Stephenson * Improved performance when deleting many entries. 2016-05-03 Robby Stephenson * Use elided text in Choice combobox to avoid wide windows (Bug 362028). 2016-04-26 Robby Stephenson * Added menu items for each Url field in icon view (Bug 250913). 2016-04-25 Robby Stephenson * Fixed crashing bug with empty table rows (Bug 361622). 2016-04-16 Robby Stephenson * Fixed filter comparison with custom dates (Bug 361625). 2016-01-15 Sven Werlen * Fixed "Defaults" button in Collection Fields dialog (Bug 357637). 2015-12-06 Robby Stephenson * Released Tellico 2.3.11. 2015-10-25 Robby Stephenson * Removed the Yahoo fetcher. 2015-10-22 Robby Stephenson * Added user-defined query pairs for SRUFetcher url. 2015-08-22 Robby Stephenson * Improved PDF importer for Science Direct files. 2015-08-16 Robby Stephenson * Fixed key accelerator conflict for 'D' in Collection Fields dialog (Bug 351226). 2015-08-05 Robby Stephenson * Fixed bug with using external fetcher source with MODS output. 2015-07-19 Robby Stephenson * Fixed a crashing bug with Nepomuk and certain file types (Bug 345458). 2015-06-02 Robby Stephenson * Fixed a bug with HTML exporting titles with single-quotes (Bug 348381). 2015-05-27 Robby Stephenson * Removed the Citebase fetcher. 2015-05-24 Robby Stephenson * Fixed a bug showing horizontal scroll bar with many table columns (Bug 348189). 2015-03-15 Robby Stephenson * Removed the PilotDB exporter. 2015-02-15 Robby Stephenson * Released Tellico 2.3.10. 2015-02-14 Robby Stephenson * Updated the Moviemeter data source to use the new JSON API. * Removed the local KXmlRpc copy since it is no longer needed. * Updated cover path in DarkHorse fetcher. 2015-01-23 Robby Stephenson * Updated the Discogs data source to use the new JSON API. 2014-12-22 Robby Stephenson * Added filter rules for numbers less than and greater. 2014-12-12 Robby Stephenson * Converted the BoardGameGeek fetcher from a script to the XML API. 2014-12-06 Robby Stephenson * Added importer for BoardGameGeek collections. 2014-12-05 Robby Stephenson * Fixed bug with importing Goodreads collection. 2014-11-09 Robby Stephenson * Added workaround for incorrect cover thumbnail in BoardGameGeek fetcher. 2014-10-20 Robby Stephenson * Updated CSV importer to recognize LibraryThing files. 2014-10-19 Robby Stephenson * Fixed bug with Allocine API search using punctuation (Bug 337432). 2014-10-11 Robby Stephenson * Added data source for Mathematical Review. * Fixed crashing bug with some ISBNdb results (Bug 339063). * Updated Producer results for IMDb and TheMovieDB fetchers (Bug 336765). 2014-10-11 Pino Toscano * Update internal libcsv copy to 3.0.3. 2014-10-09 Pino Toscano * Switch to using libdiscid for reading audio CD info. 2014-06-22 Robby Stephenson * Released Tellico 2.3.9. 2014-05-26 Robby Stephenson * Fixed bug with writing out link-only images in HTML exporter (Bug 330649). 2014-05-25 Robby Stephenson * Fixed character encoding in Allocine fetcher (Bug 334527). * Removed IMDb country choice since it's now unavailable (Bug 330641). 2014-04-27 Robby Stephenson * Disabled Discogs image fetching since OAuth is now required. 2014-04-17 Robby Stephenson * Fixed CSV importer bug, causing a hang (Bug 329677, Debian Bug 729503). 2014-01-31 Robby Stephenson * Updated TheMovieDB fetcher to API version 3. 2014-01-30 Robby Stephenson * Fixed crashing bug in IMDB fetcher (Bug 330591). 2013-11-14 Robby Stephenson * Fixed crashing bug in command-line importing (Debian bug 729499). 2013-11-08 Robby Stephenson * Fixed type error in Microsoft Academic Search fetcher. 2013-11-07 Robby Stephenson * Fixed error in setting modified date for entry in certain cases (Bug 326911). 2013-11-06 Robby Stephenson * Improved GCstar import and export to handle custom GCstar fields. 2013-10-13 Robby Stephenson * Updated IMDb fetcher (Bug 325673). 2013-07-07 Robby Stephenson * Released Tellico 2.3.8. 2013-07-04 Robby Stephenson * Disabled fetchers for Spanish Ministry of Culture, Beyazperde, Filmstarts, ScreenRush, and Sensacine. 2013-07-01 Robby Stephenson * Updated ISBNdb.com fetcher to use v2 of API. 2013-06-09 Robby Stephenson * Added Bibtex importing for drag/drop text (Bug 319182). 2013-06-08 Robby Stephenson * Fixed Entrex/Pubmed fetcher for summary requests (Bug 319501). 2013-04-05 Robby Stephenson * Fixed bug with retaining allowed values when adding entries from data sources (Bug 317905). 2013-03-27 Robby Stephenson * Fixed bug with not properly escaping text in CSV exporter (Bug 317473). 2013-03-24 Robby Stephenson * Updated GiantBombFetcher for XML changes in responses. 2013-03-11 Robby Stephenson * Fixed regexp in Google Scholar fetcher to set cookie (Bug 316550). 2013-03-10 Robby Stephenson * Update Allocine API to use JSON instead of XML. 2013-03-03 Robby Stephenson * Add coverartarchive.org to MusicBrainz data source. 2013-02-09 Robby Stephenson * Fixed character encoding in IMDB results list (Bug 314113). 2013-02-02 Robby Stephenson * Added fetcher for VNDB.org. 2013-01-27 Robby Stephenson * Added Dewey Decimal and LCC to ISBNdb.org results. 2013-01-26 Robby Stephenson * Fixed crashing bug with OpenLibrary fetcher. 2013-01-23 Robby Stephenson * Released Tellico 2.3.7. 2013-01-18 Robby Stephenson * Fixed a bug with the number field not catching a modified value (Bug 313304). 2013-01-08 Robby Stephenson * Fixed a bug with editing the toolbar config in KDE 4.9.2+. 2012-12-07 Robby Stephenson * Added a config setting for using a Google API key for book searches. * Updated fetcher for IMDb. 2012-11-21 Robby Stephenson * Added VinoXML importer. 2012-11-03 Robby Stephenson * Added fetcher for DBLP.org. 2012-10-14 Robby Stephenson * Fixed a bug that caused loans to fail to get checked-in (Bug 307958). 2012-09-18 Robby Stephenson * Added fetcher for thegamesdb.net. 2012-09-09 Robby Stephenson * Changed Griffith importer to use XML files instead of python script and assuming a sqlite3 database. 2012-09-03 Robby Stephenson * Updated Delicious Library importer. 2012-08-26 Robby Stephenson * Removed API key configuration for Discogs since it's no longer needed. 2012-08-22 Robby Stephenson * Corrected character encoding for DVDfr search. * Corrected title vs. original title in DVDfr results. * Corrected actor and role order in Allocine fetcher. 2012-08-07 Robby Stephenson * Fixed a bug with adding new fields when importing bibtex (Bug 304767). 2012-07-13 Robby Stephenson * Released Tellico 2.3.6. 2012-06-10 Robby Stephenson * Added simple importer for CIW files from ISI. 2012-05-30 Robby Stephenson * Added data sources for IMDB in French, Spanish, German, Italian, and Portuguese. 2012-05-12 Robby Stephenson * Fixed a bug with loading images from Google Book search (Bug 299789). 2012-05-06 Robby Stephenson * Added API data source for HathiTrust. 2012-05-04 Robby Stephenson * Fixed a bug when using a local image directory for a file that has not yet been saved (Bug 299130). 2012-04-20 Robby Stephenson * Added API data sources for Allocine, ScreenRush, FilmStarts, SensaCine, and Beyazperde. 2012-03-23 Robby Stephenson * Fixed bugs in IBS.it data source. 2012-03-14 Robby Stephenson * Added data source for Springer Link. 2012-03-09 Robby Stephenson * Added data source for the Microsoft Academic Search. 2012-02-26 Robby Stephenson * Fixed a crashing bug when entering multiple ISBN values in search. * Improved Amazon search for US UPC values from non-UPC sites. 2012-01-15 Robby Stephenson * Fixed a crashing bug when using the scanner dialog. * Released Tellico 2.3.5. 2011-12-26 Robby Stephenson * Fixed bug with merging entries. Entry IDs will never be different so don't warn the user (Bug 289346). * Fixed bug with Cancel not working in the Entry Merge dialog. 2011-12-17 Robby Stephenson * Refactored fetcher tests to check for network access before running * Updated Discogs fetcher to use API v2 2011-12-14 Robby Stephenson * Fixed importing of multi-line notes from Alexandria (Bug 289022). 2011-11-30 Robby Stephenson * Updated fetcher for Allocine.fr. 2011-10-28 Robby Stephenson * Added filter rules for dates before and after. 2011-10-13 Robby Stephenson * Fixed broken script for searching Dark Horse Comics. 2011-10-05 Robby Stephenson * Fixed bug that always showed checkmark for boolean field values (Bug 283444). 2011-10-04 Robby Stephenson * Updated GCstar exporter to include images. 2011-09-27 Robby Stephenson * Added Amazon data sources for China, Spain, and Italy. 2011-09-24 Robby Stephenson * Released Tellico 2.3.4. 2011-09-18 Robby Stephenson * Fixed bug when editing month in the date widget in KDE 4.7 (Bug 281365). 2011-08-30 Robby Stephenson * Fixed showing a doubled filter count (Bug 281082). 2011-08-21 Robby Stephenson * Added data source for Google Book search. 2011-07-23 Robby Stephenson * Updated filter rules to match against values without diacritics for "Contains" criters (Bug 222400). 2011-07-20 Robby Stephenson * Fixed bug in year from Douban.com data source. * Fixed TMDB search for multiple person results. 2011-07-01 Robby Stephenson * Added importer for MovieMeter.nl. 2011-06-24 Robby Stephenson * Fixed crashing bug with CSV importer and changing delimiters. 2011-05-29 Robby Stephenson * Made Entry View always visible. * Moved icon view to share space with the list view (Bug 250912). 2011-05-20 Robby Stephenson * Added importer for Goodreads collections. 2011-05-13 Pedro Miguel Carvalho * Added shortcut key to switch main window to/from full screen state. * Added shortcut key to show/hide menubar (Bug 251157). 2011-05-07 Pedro Miguel Carvalho * Added UI controls for changing icon size (Bug 250907). 2011-05-07 Robby Stephenson * Fixed bug with image link in Tri-Column report template (Bug 272744). 2011-05-06 Robby Stephenson * Added French, Spanish, and German codes for TheMovieDB. * Added icon cache to improve performance with large images (Patch from Pedro Miguel Carvalho, Bug 272583). 2011-05-01 Robby Stephenson * Changed image loading to use known id instead of recalculating, improves performance. 2011-04-10 Robby Stephenson * Improved performance for loading and sorting large collections. * Released Tellico 2.3.3. 2011-04-04 Robby Stephenson * Fixed bug with loans not being updated for removed entries (Bug 270129). 2011-03-21 Robby Stephenson * Fixed crashing bug for editing some values (Bug 269044). 2011-03-19 Robby Stephenson * Fixed editing existing filters (Bug 268829). 2011-03-07 Robby Stephenson * Added Manga search for AnimeNfo. 2011-02-27 Robby Stephenson * Fixed parsing bug with AnimeNfo results. 2011-02-23 Regis Boudin * Updated videodev include for compatibility with Linux kernel 2.6.38+. 2011-02-21 Robby Stephenson * Added data source for douban.com. 2011-02-19 Robby Stephenson * Added data source fetcher for filmaster.com. 2011-02-18 Regis Boudin * Fixed build with GCC 4.6. 2011-02-13 Robby Stephenson * Added check for duplicate bibtex keys (Bug 245225). 2011-02-02 Robby Stephenson * Added capability to import ADS format for z39.50 sources. 2011-01-11 Robby Stephenson * Fixed bug with parsing empty table values (Bug 261108). 2011-01-03 Robby Stephenson * Fixed parsing bug with IMDb results (Bug 262036). 2010-12-12 Robby Stephenson * Released Tellico 2.3.2. 2010-12-11 Robby Stephenson * Updated Bibtex handler to translate ~ to non-breaking space. 2010-12-08 Robby Stephenson * Updated Allocine script to version 0.7.3 (Bug 258281). 2010-12-03 Robby Stephenson * Fixed sorting multiple numeric values in column view. * Fixed sorting for numeric values in group view. 2010-12-01 Robby Stephenson * Fixed bug with FreeDB results not using track artists (Bug 258541). * Fixed bug with importing Bibtex file with keyword and keywords fields (Bug 258269); 2010-11-23 Robby Stephenson * Fixed Google Scholar fetcher to properly set bibtex cookie. 2010-11-21 Robby Stephenson * Added cover art to MusicBrainz fetcher. 2010-11-20 Robby Stephenson * Switched Nepomuk requirement to optional for file metadata. 2010-11-14 Robby Stephenson * Fixed bug with updating groups for derived values (Bug 256374). 2010-11-10 Robby Stephenson * Fixed bug with list view settings not being saved between sessions (Bug 256373). 2010-11-06 Robby Stephenson * Released Tellico 2.3.1. 2010-11-02 Robby Stephenson * Fixed edit dialog behavior when closing to be consistent with discarding data (Bug: 255938). 2010-10-21 Robby Stephenson * Fixed error in Italian translation that caused HTML error and add workaround for future problems (Bug: 254863). 2010-10-17 Robby Stephenson * Updated Freebase source for adapted /music/release schema. 2010-10-14 Robby Stephenson * Updated IMDb data source for new layout (Bug: 253549). 2010-10-13 Robby Stephenson * Added options in CSV importer and exporter for table delimiters. 2010-09-20 Robby Stephenson * Changed URL field output to truncate link text to 30 letters (Bug: 250880). 2010-09-12 Robby Stephenson * Increased max icon size to 256. 2010-09-11 Robby Stephenson * Changed updating match algorithm to try to improve results when having multiple good matches (Bug: 250886). 2010-09-10 Robby Stephenson * Updated GCstar plugin fetcher to use a separate thread. * Fixed crash with z39.50 fetcher (Bug: 250795). 2010-09-07 Robby Stephenson * Updated GCstar plugin fetcher to work with comic books. 2010-09-03 Robby Stephenson * Fixed parsing for director and writer in IMDB fetcher (Bug: 249096). 2010-09-02 Robby Stephenson * Updated DTD and added unit test for validation. 2010-08-29 Robby Stephenson * Added GCstar import/export for comic book collections. 2010-08-28 Robby Stephenson * Fixed bug with adding new fields during CSV import. 2010-08-25 Robby Stephenson * Added GCstar export for wine collections. * Improved GCstar import for wine collections. 2010-08-21 Robby Stephenson * Fixed filter view to apply filter when item is selected (Bug: 248657). 2010-08-16 Robby Stephenson * Improved exporter to add option for limiting exported fields (Bug 246390). 2010-08-13 Robby Stephenson * Added data source fetcher for dvdfr.com. 2010-08-07 Robby Stephenson * Released Tellico 2.3. 2010-07-29 Robby Stephenson * Fixed sorting by rating when rating has double digits (Bug: 246202). 2010-07-25 Robby Stephenson * Fixed IMDb matching on partial titles (Bug: 245665). * Fixed IMDb fetching of alternative titles. 2010-07-11 Robby Stephenson * Fixed IMDb fetching of audio track and color (Bug: 244159). 2010-07-10 Robby Stephenson * Fixed metadata import for file listing. 2010-07-09 Robby Stephenson * Added Dewey Decimal and LoC Classification to z3950 MODS import. * Fix subtitle value in MODS import. 2010-06-19 Robby Stephenson * Added filter for data source list. 2010-05-04 Robby Stephenson * Updated BoardGameGeek fetcher for new API. 2010-05-02 Robby Stephenson * Added data source for Freebase. 2010-04-29 Robby Stephenson * Fixed crashing bug for loading images whose size exceeded the cache size. 2010-04-28 Robby Stephenson * Changed Amazon Japan video search to include DVDs. * Added new fetcher for combining results from multiple sources. 2010-04-27 Robby Stephenson * Updated allocine.fr script to version 0.7.1, patch from Romain Henriet. 2010-03-29 Robby Stephenson * Fixed bug with cursor position in date field entry. 2010-03-27 Robby Stephenson * Added fetcher for openlibrary.org (requires QJSON lib). 2010-03-24 Robby Stephenson * Added clear button for rating widget (BUG: 227982). * Control characters are now stripped from all text files on import (BUG: 231302). * Removed local FindKcddb cmake module in favor of system FindKdeMultimedia. 2010-03-23 Robby Stephenson * Fixed selection bug when duplicating an entry (BUG: 231125). 2010-03-22 Robby Stephenson * Fixed crash in exporting HTML for collections with no grouping field (BUG: 231302). * Fixed bug that showed info dialog multiple times when changing image location. 2010-02-24 Robby Stephenson * Fixed crash in CSV importer. 2010-02-21 Robby Stephenson * Tweaked entry ID values to start at 1 instead of 0. 2010-02-13 Robby Stephenson * Released Tellico 2.2. 2010-02-06 Robby Stephenson * Enabled Korganizer integration for tracking loans. 2010-01-27 Robby Stephenson * Fixed some hyphenation problems when typing 978 ISBN values. * Enabled KAddressBook integration for borrowers. 2010-01-15 Robby Stephenson * Fixed bug in en_GB translation that affected file selection. 2010-01-13 Robby Stephenson * Enabled filter dialog to apply empty filter. 2010-01-03 Robby Stephenson * Improved performance for modifying many entries at once. 2010-01-01 Robby Stephenson * Added Giant Bomb data source. 2009-12-31 Robby Stephenson * Fixed adding "link-only" files (BUG #220645). * Fixed Discogs track download and title search. 2009-12-22 Robby Stephenson * Updated CrossRef data source to allow authentication via email address. * Updated Crossref data source for new schema. 2009-12-19 Robby Stephenson * Added MusicBrainz data source. 2009-12-18 Robby Stephenson * Fixed setting correct permissions of backup file (BUG #219259). * Fixed formatting of multiple people with auto-formatting (BUG #219268). 2009-12-16 Robby Stephenson * Added themoviedb.org data source. 2009-12-12 Robby Stephenson * Improve updating from Amazon to include book title or album title in search. 2009-12-04 Robby Stephenson * Added option for turning webcam off. 2009-11-30 Robby Stephenson * Enabled JavaScript for report dialog, incase a template wants to use it. * Fixed crashing bug for sorting during HTML export. * Fixed multiple selection in entry view (KDE #216122). 2009-11-20 Robby Stephenson * Fixed IMDB search to find director and writers. * Fixed Polish ISBN formatting. * Released Tellico 2.1.1. 2009-11-17 Robby Stephenson * Fixed sorting in icon view. 2009-11-16 Robby Stephenson * Fixed bug that kept filters from being saved. BUG#214672. 2009-11-12 Robby Stephenson * Updated script for searching allocine.fr. 2009-11-11 Robby Stephenson * Changed webcam image preview to only appear when searching by ISBN or UPC/EAN. 2009-11-10 Robby Stephenson * Fixed sorting when auto-formatting is on. 2009-11-06 Robby Stephenson * Fixed crashing bug related to some table values. * FIxed crashing bug related to column sorting. BUG#214661. 2009-11-01 Robby Stephenson * Released Tellico 2.1. 2009-10-31 Robby Stephenson * Fixed crashing bug for loading ISBN list from file. 2009-10-22 Robby Stephenson * Fixed bug with the sort order not being saved. 2009-10-21 Robby Stephenson * Fixed bug that auto-formatting was not always applied. 2009-10-11 Robby Stephenson * Fixed grouping to always show group for empty value. * Fixed crashing bug when filtering entry with empty title. * Fixed compilation for KDE < 4.2. * Fixed filtering bug when modifying entry value. 2009-10-10 Robby Stephenson * Added PAM/PRISM translator to SRU fetcher. 2009-10-07 Robby Stephenson * Updated Amazon and Crossref search to no longer store key in the KWallet. 2009-10-03 Robby Stephenson * Fixed bug to allow multiple values in table columns. 2009-09-30 Robby Stephenson * Added Wine.com data source. 2009-09-29 Robby Stephenson * Updated GCstar import support for video games and board games. 2009-09-24 Robby Stephenson * Updated ISBNdb.com fetcher and Discogs fetcher to allow user access keys. 2009-09-23 Robby Stephenson * Updated the SRU fetcher to leave the response format empty. 2009-09-22 Robby Stephenson * Fixed crash when exporting to HTML under certain conditions. * Removed the GCcfilms exporter and added the GCstar exporter. 2009-09-21 Robby Stephenson * Fixed typo in DTD. 2009-09-20 Robby Stephenson * Released Tellico 2.0. 2009-09-07 Robby Stephenson * Enabled multiple ISBN and LCCN search for SRU fetcher. 2009-09-06 Robby Stephenson * Updated the "Multiple ISBN" dialog box to validate ISBN and CueCat input. 2009-09-04 Robby Stephenson * Updated webcam support to use libv4l library. 2009-09-01 Robby Stephenson * Released Tellico 2.0pre2. 2009-08-23 Robby Stephenson * Added default fields for entry creation date and last-modified date. * Removed dependency on QCA2 library. 2009-08-09 Robby Stephenson * Updated Tellico user mailing list address. * Released Tellico 2.0pre1. 2009-08-01 Robby Stephenson * Updated HTML export to use country and language code both for sorting. * Updated Tellico home page URL. * Moved to document syntax 11 for removing Dependent and ReadOnly fields. * Added ID field to each new collection by default. 2009-03-13 Petri Damstén * Added scanning support to image widget. * Added 'Open With...' -button to image widget 2009-03-10 Robby Stephenson * Added reading album artist from TPE2 tags in mp3 files. 2009-02-14 Robby Stephenson * Released Tellico 1.3.5. 2009-02-04 Robby Stephenson * Reverted change from 2007 that merged entries by combining all values in multiple-value fields. 2009-02-02 Robby Stephenson * Fixed the CueCat decoder to work for ISBN searches, as well as UPC. 2009-01-30 Robby Stephenson * Updated Deliciour Library 1 importer to handle movies and games. * Fixed Ubuntu bug#317822, don't mark collection modified when image is found in local data directory. * Fixed query bug with z39.50 ISBN search. 2008-12-07 Robby Stephenson * Updated it.po, thanks to Valerio Ricci. 2008-10-23 Robby Stephenson * Added date, time, and username as available params for the XSLT export. 2008-09-13 Robby Stephenson * Released Tellico 1.3.4. 2008-09-04 Robby Stephenson * Fixed error with consecutive tabs in CSV import. 2008-08-26 Robby Stephenson * Fixed bug with image links in reports not being linked correctly. 2008-08-20 Robby Stephenson * Added minimal searching for board games from Amazon. 2008-08-07 Robby Stephenson * Changed Choice fields to sort by position in list. 2008-07-25 Robby Stephenson * Added ESC key for clearing quick filter. * Improved drag/drop to match on file extension after checking mimetype. 2008-07-22 Robby Stephenson * Updated IMDb plot regexp. 2008-07-09 Robby Stephenson * Fixed EntryView to honor copy() command properly, for clipboard. * Released Tellico 1.3.3. 2008-06-24 Robby Stephenson * Updated Porbase URL in z39.50 server list. 2008-06-13 Robby Stephenson * Updated drag-and-drop to allow HTTP urls. 2008-06-12 Robby Stephenson * Changed Arxiv fetcher to remove ID version number for results. 2008-06-07 Robby Stephenson * Fixed bug with merging file catalogs, to properly match on URL. 2008-05-24 Robby Stephenson * Released Tellico 1.3.2.1. * Fixed en_GB translation to remove context strings. 2008-05-23 Robby Stephenson * Released Tellico 1.3.2. * Include Canadian LCC values, patch from Peter Stevenson. 2008-05-19 Robby Stephenson * Updated entry creation to always add default values. Fixes Debian bug 481639. 2008-04-29 Robby Stephenson * Improved IMDb search results. 2008-04-15 Robby Stephenson * When adding a book to a bibliography, set the type to 'book'. 2008-04-11 Robby Stephenson * Updated LCCN search to validate format. * Updated entry match to compare validated LCCN. * Updated z39.50 search to allow multiple LCCN values. 2008-04-09 Robby Stephenson * Changed loader to eliminate possible duplicates for fields allowing multiple values (like keywords). * Updated PubMed search to add all keywords. * Fixed PubMed search to use utf8 encoding. 2008-04-08 Robby Stephenson * Changed XML loader to strip whitespace from non-paragraph values. 2008-04-06 Robby Stephenson * Added languages and editors to Amazon book import. 2008-03-15 Robby Stephenson * Updated mods2tellico.xsl to try to capture more of mods info converted from refbase. 2008-03-13 Robby Stephenson * Updated mods2tellico.xsl to try to capture more of bibtex info converted from wikindx. 2008-03-10 Robby Stephenson * Released Tellico 1.3.1. * Added Discogs.com fetcher. 2008-03-06 Robby Stephenson * Added Google Scholar search. 2008-03-05 Robby Stephenson * Fixed bug that prevented using bibtex format for external scripts. 2008-03-03 Robby Stephenson * Changed "ISBN not found" dialog to only appear if multiple ISBN values are being searched. 2008-03-01 Robby Stephenson * Fixed bug with SRU format not getting remembered in config dialog. * Fixed bug with entries with multiple titles not getting linked in the HTML export. 2008-02-29 Robby Stephenson * Added LCCN lookup to z39.50 source. * Added LCCN lookup to SRU source. * Updated CrossRef fetcher to use new unixref format with more data. 2008-02-26 Robby Stephenson * Added DOI search to Entrez/Pubmed interface. * Fixed bug with some free-form date fields not getting formatted correctly, resulting in a blank string in column view and reports. 2008-02-12 Robby Stephenson * Improved loader to delay loading linked images as long as possible. 2008-02-11 Robby Stephenson * Fixed Bibtex import for keywords field. 2008-02-07 Robby Stephenson * Updated Delicious Library importer to look for cover images. * Updated BoardGameGeek script to grab cover image, patch from Sven Werlen. 2008-01-29 Robby Stephenson * Released Tellico 1.3. * Fixed bug with stepping through selected entries after editing one. 2008-01-20 Robby Stephenson * Fixed bug with matching ISBN values for updating entries. 2008-01-11 Robby Stephenson * Released Tellico 1.3pre1. 2008-01-09 Robby Stephenson * Updated Spanish Ministry of Culture script. 2008-01-05 Robby Stephenson * Updated IMDB search to fix director and TV cast. 2007-12-11 Robby Stephenson * Added DCOP calls to set the view filter and to show entries. * Improved filter to allow specifying field name with '='. 2007-12-10 Robby Stephenson * Added importer for Delicious Library files. 2007-12-06 Robby Stephenson * Updated Dependant field parsing to allow %{id} to grab entry id. * Added context menu option in icon view to change sorting. * Extended the DCOP interface to allow adding and removing entries, reading field values, and setting field values. 2007-11-30 Robby Stephenson * Added capability to save a link to an image only, instead of saving it to the users image directory. Setting an image field property link=true will make that the default. 2007-11-26 Robby Stephenson * Updated to allow a "required" property to be included to indicate that a on-empty value should always be present when saving. * Updated to use libcsv from Robert Gamble, allowing newlines 2007-11-25 Robby Stephenson * Fixed bug with creating filter from group item. * Added Ukrainian translation from Serhij Dubyk Сергій Дубик. 2007-11-15 Robby Stephenson * Added a sharedmimeinfo file. 2007-11-13 Robby Stephenson * Added Bibsonomy fetcher. * Added citebase.org fetcher. 2007-11-06 Robby Stephenson * Added option for importing bibtex in Unicode (UTF-8). * Added importing from Referencer. 2007-11-05 Robby Stephenson * Added arxiv.org API fetcher. 2007-11-04 Robby Stephenson * Fixed bugs related to compilation with gcc 4.3. 2007-10-27 Robby Stephenson * Added option for saving images in local relative directory to data file. 2007-10-26 Robby Stephenson * Added menu command for merging entries, based on patch from Cyril Dangerville. 2007-10-24 Robby Stephenson * Added CrossRef search for DOI. 2007-10-21 Robby Stephenson * Fixed list view sorting to take into account automatic formatting. * Fixed date sorting to put empty dates first. 2007-10-19 Robby Stephenson * Fixed sorting bug for images. * Fixed sorting bug for empty dates in HTML export, patch from Jake Maciejewski. 2007-10-15 Robby Stephenson * Fixed crashing bug in bibtex importer. 2007-10-14 Robby Stephenson * Added PDF importer, using exempi XMP library. * Added drag & drop support for PDF importer. 2007-10-13 Robby Stephenson * Added DOI and URL to default bibtex collection fields. 2007-09-23 Robby Stephenson * Added data source for using GCstar plugins. * Fixed bug with escaping the image id for file names. 2007-09-22 Robby Stephenson * Released Tellico 1.2.14. 2007-09-20 Robby Stephenson * Added importer for Griffith database. 2007-09-10 Robby Stephenson * Updated Spanish Ministry of Culture script to search out of prints book and add notes field. * Updated tellico2html.js file for searching in HTML export. * Updated GCstar import to parse new XML format in GCstar version 1.2. 2007-08-27 Robby Stephenson * Updated allocine.fr source script to version 0.4, thanks to Mathias Monnerville. * Updated the Amazon.com search to allow searching for comic books. * Updated the isbndb.com search to allow searching for comic books. * Fixed ISBNdb search. 2007-08-25 Robby Stephenson * Changed default SRU port from 7090 to 80. 2007-08-23 Robby Stephenson * Update CSS in HTML export. 2007-08-10 Robby Stephenson * Fixed bug with yaz_iconv not flushing complete string for z39.50 search. 2007-08-09 Robby Stephenson * Added MARCXML to possible SRU format. * Fixed bug with MARC stylesheets to work with better with embedded records. 2007-08-03 Robby Stephenson * Updated entry updating to work with all collection types. 2007-07-28 Robby Stephenson * Released Tellico 1.2.13. 2007-07-24 Robby Stephenson * Added spell-check for text and paragraph fields. 2007-07-22 Robby Stephenson * Added compatibility with yaz3. 2007-07-19 Robby Stephenson * Added importer for GCstar files. * Fixed bug with namespace handling in Tellico XML loading. 2007-07-14 Robby Stephenson * Added Copac and National Library of Lithuania to z39.50 list. 2007-07-08 Robby Stephenson * Fixed crashing bug when adding items to a collection with loans. 2007-07-04 Robby Stephenson * Released Tellico 1.2.12. * Changed z39.60 search event loop in an attemp to fix some intermittent freezes. 2007-06-26 Robby Stephenson * Changed Quick Filter to split text on white space and do an AND search. * Bumped automake requirement to version 1.8 or later for macro to work. * Fixed HTML export to not rewrite file location for files referenced in the XSL file which don't exist. * Fixed Column View report to sort numerically when needed. * Fixed Date fields to suppress empty date values. * Fixed Date comparisons to work for single digits, patch from Jake Maciejewski. * Fixed Fields Dialog to show warnings when clicking Ok. 2007-06-22 Robby Stephenson * Added '\%' to bibtex translation table for comment escaping. 2007-05-30 Robby Stephenson * Fixed potential recursion bug for dependent fields. 2007-05-26 Robby Stephenson * Fixed bug that didn't write image size options when printing. 2007-05-09 Robby Stephenson * Added Turkish translation, thanks to Ali Isingor. 2007-05-08 Robby Stephenson * Released Tellico 1.2.11. 2007-05-06 Robby Stephenson * Improved file saving performance by caching image info on load. 2007-05-04 Robby Stephenson * Fixed bug that lost some images when loading directly from XML. 2007-04-13 Robby Stephenson * Fixed sorting for Dependent fields to match on subfields. 2007-04-12 Robby Stephenson * Fixed BibteXML export to include author. * Fixed book collection conversion to bibliography to set entry type. 2007-04-10 Robby Stephenson * Updated IMDb search for director and writer. * Fixed CDDB lookup on OpenBSD, patch from Marc Espie. 2007-04-07 Robby Stephenson * Released Tellico 1.2.10. 2007-04-03 Robby Stephenson * Improved accuracy and comprehensiveness of merging collections. * Changed collection merge to concatenate paragraph fields. * Fixed bug that hid some field groups after undoing append collection. 2007-04-01 Robby Stephenson * Added Blu-ray and HD DVD to video formats. 2007-03-31 Robby Stephenson * Updated ibs.it searching. * Fixed searching to replace all HTML entities. * Fixed character encoding for Alexandria import. 2007-03-29 Robby Stephenson * Updated Amazon API to 2007-02-22. * Fixed error handling for ISBN-13 searches. * Fixed bug that showed "ISBN Not Found" dialog in error. 2007-03-27 Robby Stephenson * Cleaned-up up ONIX export a bit. * Fixed Alexandria export. * Fixed importing covers from Alexandria. 2007-03-24 Robby Stephenson * Fixed bug that caused some amazon results to be hidden when repeating a search. 2007-03-20 Robby Stephenson * Fixed hanging bug when stopping a z39.50 search. 2007-03-14 Robby Stephenson * Fixed crashing bug when undoing a collection import or replacement. 2007-03-01 Robby Stephenson * Released Tellico 1.2.9. 2007-02-25 Robby Stephenson * Relaxed MODS processing to allow any result with typeOfResource="text" * Fixed bug with adding space after commas in edit widget. * Fixed bug with formatting of dependent fields always being capitalized. 2007-02-20 Robby Stephenson * Updated IMDb parsing for alternative titles and certifications. 2007-02-06 Robby Stephenson * Fixed sorting for rating groups with rating = 10. 2007-02-03 Robby Stephenson * Released Tellico 1.2.8. 2007-01-22 Robby Stephenson * Updated CDDB import to grab extd data as comments, and category as keyword. 2007-01-21 Robby Stephenson * Updated audio file importer to take disc number into account for mp3, ogg, and flac files. 2007-01-13 Robby Stephenson * Changed IMDB rating to allow float values. * Fixed compile error for z3950 connection, patch from Markus Brueffer. 2007-01-04 Robby Stephenson * Fixed cleanup for deleting scripts installed from newstuff. 2007-01-03 Robby Stephenson * Fixed busy cursor hanging in newstuff download dialog. 2006-12-21 Robby Stephenson * Fixed "ISBN Not Found" dialog to have selectable text. 2006-12-19 Robby Stephenson * Fixed bug with comparing relative URLs for merging file catalogs. 2006-12-17 Robby Stephenson * Fixed bug with some results in z39.50 search not showing up, due to search events getting processed out of order. 2006-12-07 Robby Stephenson * Fixed bug with secondary and tertiary sorting. 2006-12-06 Robby Stephenson * Bumped the Amazon ECS version to 2006-11-30. * Updated Amazon search to allow ISBN-13 values. * Fixed bug with saving URLs without the protocol. * Changed entry comparison for files to match only on URL value. * Released Tellico 1.2.7. 2006-12-04 Robby Stephenson * Improved performance for copying and deleting multiple entries. 2006-11-30 Robby Stephenson * Updated sorting to take title articles into account. 2006-11-29 Robby Stephenson * Added ISBN hyphenation rules for German, Czech, and Dutch. * Fixed bug that caused image loss when loading from data file. 2006-11-10 Robby Stephenson * Released Tellico 1.2.6. 2006-11-09 Robby Stephenson * Improved TV show matching for IMDB. 2006-11-05 Robby Stephenson * Fixed crashing bug in ProgressItem, reported by Izaak Branderhorst. 2006-11-03 Robby Stephenson * Released Tellico 1.2.5. 2006-11-01 Robby Stephenson * Fixed another bug with over-writing images on entry update. 2006-10-24 Robby Stephenson * Updated yahoo audio search webservice url. 2006-10-18 Robby Stephenson * Added warning when importing CSV without assigning any fields. * Updated allocine script (v 0.3), from Mathias Monnerville. 2006-10-16 Robby Stephenson * Added board game collection, patch from Steve Beattie. * Added script for searching boardgamegeek.com, patch from Steve Beattie. 2006-10-15 Robby Stephenson * Branched 1.2.x series. * Fixed encoding bug with allocine.fr script. 2006-10-14 Robby Stephenson * Released Tellico 1.2.4. 2006-10-12 Robby Stephenson * Fixed bug with overwriting images when updating entries. 2006-10-11 Robby Stephenson * Improved performance on loading and unloading. * Changed Nintendo 'Revolution' to 'Wii'. 2006-10-05 Robby Stephenson * Fixed off-by-one error in file listing volume name reader. * Update allocine fetcher. 2006-09-25 Robby Stephenson * Fixed bug with fetch dialog showing all sources, instead of just relevant ones. 2006-09-24 Robby Stephenson * Released Tellico 1.2.3. 2006-09-20 Robby Stephenson * Added button to search dialog to get additional results. 2006-09-14 Robby Stephenson * Updated to work with KDE 3.3.1 or later. 2006-09-09 Robby Stephenson * Fixed bug with HTML export not including tellico2html.js. 2006-09-07 Robby Stephenson * Fixed bug that could cause loss of images. * Fixed URL output in Image List report. * Released Tellico 1.2.2. 2006-09-06 Robby Stephenson * Released Tellico 1.2.1. 2006-09-05 Robby Stephenson * Fixed CDDB cache importer to always assume utf-8, as in libkcddb. * Changed bibtex exporter to add braces or quotes around url fields. 2006-09-04 Robby Stephenson * Fixed infinite loop in file listing importer. * Increased default image cache size to 10 meg. * Reworked image loading to avoid reloading large images as much as possible. 2006-09-02 Robby Stephenson * Fixed bug with CDDB not working (always using debug for Pink Floyd!) 2006-09-01 Robby Stephenson * Fixed bug with completion not working in filter dialog. * Fixed bug with template image gradients not getting updated properly. 2006-08-31 Robby Stephenson * Released Tellico 1.2. 2006-08-30 Robby Stephenson * Fixed crashing bug when using right-click in list view. 2006-08-16 Robby Stephenson * Added Abstract and Keywords to default fields for bibliographies. 2006-08-15 Robby Stephenson * Released Tellico 1.2-pre3. 2006-08-09 Robby Stephenson * Released Tellico 1.2-pre2. 2006-08-07 Robby Stephenson * Fixed bug with merging fields in CSV importer. 2006-08-06 Robby Stephenson * Released Tellico 1.2-pre1. 2006-08-06 Robby Stephenson * Added "next" and "prev" buttons to entry editor. 2006-08-04 Robby Stephenson * Changed HTML export to use libxml2 instead of KHTML for parsing. That should fix the "all text on one line" problem. * Bumped minimum libxml2 verstion to 2.6.0 or greater. 2006-07-30 Robby Stephenson * Added bundled scripts for allocine.fr, Spanish Minstry of Culture, and Dark Horse Comics, all from Mathias Monnerville. 2005-11-13 Robby Stephenson * Bumped minimum KDE version to 3.3. 2006-07-18 Robby Stephenson * Added illustrator field to MODS translator. 2006-07-13 Robby Stephenson * Changed document saving to remember what format (Zip or XML) was opened, and save the file in the same format. 2006-07-04 Robby Stephenson * Updated sorting in HTML export to be locale-aware. * Added auto-completion to filter dialog. 2006-06-30 Robby Stephenson * Improved ISBN-13 compliance. 2006-06-24 Robby Stephenson * Fixed bug with relative url links in template. 2006-06-22 Robby Stephenson * Fixed memory leak in image handling. 2006-06-16 Robby Stephenson * Changed IMDb and Amazon to always use iso-8859-1 encoding for URL. 2006-06-12 Robby Stephenson * Fixed bug with HTML export and MSIE. 2006-06-11 Robby Stephenson * Added date stamp to all report templates. 2006-06-07 Robby Stephenson * Fixed IMDb bug that hid partial name matches for duplicate names. * Implemented workaround for NetAccess::download() that doesn't show download progress info. 2006-06-03 Robby Stephenson * Added validator for unmodified CueCat bar code reader. 2006-05-07 Robby Stephenson * Released Tellico 1.1.6. 2006-05-04 Regis Boudin * Added French documentation. 2006-05-04 Robby Stephenson * Fixed bug that prevented some images from being written to data directory. 2006-04-22 Robby Stephenson * Add font and color config to templates. 2006-04-19 Robby Stephenson * Fixed bug with multiple ISBN search for z29.50. * Fixed "disappearing paragraph" bug in Fancy template. * Fixed name order for IBS searches. * Released Tellico 1.1.5. 2006-04-12 Robby Stephenson * Added Xbox 360, Revolution and Playstation3 to game collection. 2006-04-11 Robby Stephenson * Added view config saving for custom collections based on URL. * Fixed crashing bug when deleting and re-adding fields by same name. * Fixed bug with HTML decoding in IMDb plot summary. 2006-04-10 Robby Stephenson * Fixed bug that re-added default fields when adding search results. 2006-04-07 Robby Stephenson * Added OS check (linux only) for enabling cd-text support. 2006-04-06 Robby Stephenson * Updated Spanish, thanks to Alejandro Hamann and Quique. * Fixed bug with writing temporary files, even when using app data dir. 2006-04-03 Robby Stephenson * Improved PubMed fetcher to grab URL links. 2006-04-02 Robby Stephenson * Changed grouping list to be sorted alphabetically. * Fixed OpenOffice.org plugin build for OOo SDK 2.0.2. * Released Tellico 1.1.4. 2006-03-29 Robby Stephenson * Added referrer to IBS fetcher so images get downloaded. 2006-03-27 Robby Stephenson * Changed XSL templates to output valid HTML 4.01 Strict, patch from Karl Ove Hufthammer. 2006-03-25 Robby Stephenson * Added button for installing new templates. 2006-03-24 Robby Stephenson * Added context menu item in table widget for clearing table. 2006-03-23 Robby Stephenson * Added template preview button in configuration dialog. * Added field for relative folder path to file catalog listing. * Fixed bug with incorrectly setting document modified when loading images. * Fixed bug with loading loans for entries with non-consecutive ids. * Fixed bug that prevented XSLT files with spaces or other non-encoded characters from being opened. * Fixed bug that caused crashes when changing grouping options for some fields. 2006-03-15 Robby Stephenson * Fixed bug that prevented files saved with versions < 0.8 from being opened. 2006-03-12 Robby Stephenson * Released Tellico 1.1.3. 2006-03-10 Robby Stephenson * Fixed bug with comic book template not showing up in a couple of places in the GUI. * Updated MARC2MODS3 stylesheet to MODS 3.1 from LoC. * Added preset z39.50 server list. 2006-03-09 Robby Stephenson * Added isbndb.com fetcher. * Fixed z39.50 search to use proper encoding for search terms. 2006-03-07 Robby Stephenson * Changed ISO 5426 converter to grab diaeresis instead of umlaut. 2006-03-05 Robby Stephenson * Added patch from Karl Ove Hufthammer, for lang-specific sorting. * Released Tellico 1.1.2. 2006-03-04 Robby Stephenson * Fixed file save permissions to remember group. * Fixed backup file permissions. 2006-03-02 Robby Stephenson * Fixed mess with shared pointers holding shared pointers holding shared pointers... * Fixed button size in HTML export. 2006-02-28 Robby Stephenson * Updated fr.po, thanks to Mathias Monnerville. * Fixed GCfilms importer to read running time correctly. * Use IMDb url for updating if available. 2006-02-27 Robby Stephenson * Added pt_BR, thanks to Claudio Felix. 2006-02-23 Robby Stephenson * Added dialog for importing new data sources. 2006-02-22 Robby Stephenson * Fixed HTML export to always use relative links. * Fixed Fancy template column widths, patch from Karl Ove Hufthammer. 2006-02-20 Robby Stephenson * Add Ant Movie Catalog file importer. 2006-02-19 Robby Stephenson * Allow data sources to overwrite current data when updating. 2006-02-18 Robby Stephenson * Added dialog to choose from multiple CDDB lookup responses. * Fields can have default values. * Changed default IMDB server to akas.imdb.com. 2006-02-18 Robby Stephenson * Fixed cleanup when oowriter is closed. * Fixed character encoding for IMDB searches. * Released Tellico 1.1.1. * Branched Tellico 1.1.x. 2006-02-17 Robby Stephenson * Fixed image linking in HTML export. * Updated admin/ and Makefile.am for recent KDE updates. * Changed installation directory of .desktop file to use xdg_appsdir. 2006-02-14 Robby Stephenson * Fixed templates to scale images down to max of 150x200. 2006-02-08 Robby Stephenson * Fixed bug with Video template not showing nationality. * Added ISO 5426 and ISO 6937 character set converters, adapted from MARC4J; 2006-02-07 Robby Stephenson * Dual-licensed the documentation under the GFDL and the FreeBSD Documentation License. * Released Tellico 1.1. 2006-02-04 Robby Stephenson * Added track length to CDDB lookup result. 2006-02-01 Robby Stephenson * Fixed bug with not deleting some temporary files. 2006-01-29 Robby Stephenson * Updated bibtex-translation.xml, thanks to Norbert Nemec. * Updated es.po, thanks to Alejandro Hamann. 2006-01-25 Robby Stephenson * Relaxed MODS importer to look for publisher, isbn, or lccn to determine the entry is a book. Previously, a typeOfResource="text" was required. * Allowed z39.50 source to ask for MODS directly. * Added message box for stderr output from scripts. * Added simple GRS-1 importer for z39.50 fetcher. 2006-01-24 Robby Stephenson * Fixed bug with potential data los for saving image files after changing config option. * Released Tellico 1.1pre3. 2006-01-22 Robby Stephenson * Released Tellico 1.1pre2. * Improved entry views with some graphics, a la amaroK. 2006-01-21 Robby Stephenson * Added drag-n-drop from Mozilla Firefox to image widget. * Changed default behavior to include images in data file, and added a config option. * Added a message box warning about performance when the user first opens a file with more than 100 images. 2006-01-20 Robby Stephenson * Fixed bug with parsing arguments to external data source scripts. 2006-01-19 Robby Stephenson * AnimneNfo.com source added by default, and IBS.it added if Italian is in the user's language list. * Alexandria exporter includes publishing year now. 2006-01-17 Robby Stephenson * Alexandria importer includes publishing year now. 2006-01-15 Robby Stephenson * Changed file saving to be smart about which images need written to cache. Should improve save-time. * Fixed bug with undo/redo not correctly reverting to old values. 2006-01-14 Robby Stephenson * Added Russian translation, from Artur Kalimullin. 2006-01-12 Robby Stephenson * Released Tellico 1.1pre1. * Added/updated SRU fetcher. 2006-01-11 Robby Stephenson * Added Internet Bookshop (ibs.it) book source. 2006-01-10 Robby Stephenson * Added AnimeNfo.com search source. 2006-01-09 Robby Stephenson * Fixed Debian bug #346414 in hu.po. 2006-01-08 Robby Stephenson * Changed image loader to read and write images inside the Tellico shared directory to speed up loading, etc. 2005-12-06 Robby Stephenson * Merged OpenOffice.org interop. Requires SDK for compilation. 2006-01-05 Robby Stephenson * Added Yahoo! Album Search source. * Added Tri-Column video report template. 2005-12-15 Robby Stephenson * Expand external app fetcher to include any of the fetch keys. 2005-12-08 Robby Stephenson * Increased max table columns to 10. 2005-12-07 Robby Stephenson * Updated Amazon fetcher to allow selecting keywords or not. 2005-12-05 Robby Stephenson * Changed bibtex behavior to not add braces around capital letters. 2005-11-29 Robby Stephenson * Moved no-capitalization list to config dialog. 2005-11-28 Robby Stephenson * Updated Hungarian, from Csaba Zakarias. 2005-11-17 Robby Stephenson * Added separate UPC searching for Amazon. 2005-11-16 Robby Stephenson * Added CD-Text reading to FreeDBImporter, plus option to disable compilation in case of platform issues. * Move to Amazon ECS version 4. 2005-11-15 Robby Stephenson * Added IMDB rating field to fetcher. 2005-11-13 Robby Stephenson * Bumped minimum KDE version to 3.2 and minimum QT version to 3.2. 2005-11-10 Robby Stephenson * Custom data source fields are now configurable. 2005-11-07 Robby Stephenson * Made size of IMDb cast list configurable. * Broke out cite actions into submenu, and added copying bibtex to clipboard. 2005-11-03 Robby Stephenson * Bumped XML syntax version to 9 to include file catalog and changing default music collection track field to 3 columns. 2005-11-01 Robby Stephenson * Fixed compilation on GNU/kFreeBSD, Debian bug #336949, patch from Aurelien Jarno. 2005-10-29 Robby Stephenson * Improved table fields to show column titles. * Changed buttons to a right-click popup. 2005-10-27 Robby Stephenson * Improved audio file metadata importer to include track length as an additional column in the track field. 2005-10-26 Robby Stephenson * The audio file importer now checks for track numbers in the file name, patch from Andras Mantia. 2005-10-19 Robby Stephenson * Added a string store to reduce memory consumption. 2005-10-17 Robby Stephenson * Released Tellico 1.0.3. 2005-10-15 Robby Stephenson * Added buttons for inserting and removing rows from a table. 2005-10-13 Robby Stephenson * Enabled auto-updating for certain entries and data sources. 2005-10-12 Robby Stephenson * Updated it.po, from Lorenzo Novaro. 2005-10-11 Robby Stephenson * New and modified entries now show labels indicating so. 2005-10-08 Robby Stephenson * Improved status bar. 2005-10-07 Robby Stephenson * Updated CalendarHandler to compile with KDEPIM 3.5. 2005-10-06 Robby Stephenson * Fixed bug with bibtex macro names always being imported in lowercase. 2005-10-03 Robby Stephenson * Fixed bug with initialization, patch from Marco Clemencic. 2005-10-02 Robby Stephenson * Released Tellico 1.0.2. * Updated IMDB fetcher. 2005-09-25 Robby Stephenson * Fixed bug with auto-detecting MARC encoding for z39.50 import. 2005-09-22 Robby Stephenson * Fixed bug with CSV importer not properly parsing some non-CSV files. * Fixed bug with entry selection in icon view. * Added GCfilms exporter; 2005-09-21 Robby Stephenson * Fixed bug with showing invalid loan due date. * Added GCfilms importer. * Added IMDB link when fetching info from IMDB. * limited number of cast results form IMDB to 20; 2005-09-20 Robby Stephenson * Released Tellico 1.0.1. 2005-09-19 Robby Stephenson * Fixed bug with loading utf-8 encoded bibtex files. 2005-09-18 Robby Stephenson * Fixed bug with variable icon sizes in config dialog. 2005-09-16 Robby Stephenson * Fixed bug for merging field properties, which mostly showed up as double-colons in music collection tracks. * Fixed crashing bug with modifying filters and cancelling. 2005-09-11 Robby Stephenson * Added Norwegian Nynorsk translation from Karl Ove Hufthammer. 2005-09-10 Robby Stephenson * Fixed bug in audio file metadata import that was overwriting track listings incorrectly. * Fixed crashing bug for selecting groups and entries in group view. 2005-09-09 Robby Stephenson * Released Tellico 1.0. 2005-09-05 Robby Stephenson * Added Polish translaion from Marek Janukowicz. 2005-08-22 Robby Stephenson * Fixed bug with external application fetcher not reading path entries correctly. * Updated Spanish translation, thanks to Brian Hughes. 2005-08-21 Robby Stephenson * Updated Swedish, thanks to Peter Landgren. * Added patch from Nix to dynamically resize table columns. 2005-08-20 Robby Stephenson * Released Tellico 1.0pre2. 2005-08-14 Robby Stephenson * Changed audio file metadata to ignore case when doing album comparisons. * Changed collection loader to better compensate for old rating fields. * Changed AddEntry command to act on multiple entries. 2005-08-11 Robby Stephenson * Updated Dutch translation, thanks to Fred Marchee. * Updated Fininsh translation, thanks to Teuvo Eloranta. 2005-08-06 Robby Stephenson * Released Tellico 1.0pre1. 2005-08-04 Robby Stephenson * When exporting HTML, copy any relative images, etc. 2005-08-01 Robby Stephenson * Strip HTML tags from paragraph export to PilotDB. 2005-07-30 Robby Stephenson * Make the amazon importer default to medium images instead of none. 2005-07-28 Robby Stephenson * Make the 'Fancy' template default. 2005-07-01 Robby Stephenson * Released Tellico 0.13.8. 2005-06-30 Robby Stephenson * Fixed bug with CSV import parsing. 2005-06-28 Robby Stephenson * Added license exception for linking to OpenSSL. 2005-06-25 Robby Stephenson * Added a status message timeout for main window and fetch dialog. 2005-06-23 Robby Stephenson * Fixed crashing bug for fields with empty categories. 2005-06-22 Robby Stephenson * Added initial Catalan translation from David Majà Martínez. 2005-06-20 Robby Stephenson * Added fetcher for reading output from an external application. * Fixed bug with wrong icon size for entry action. 2005-06-17 Robby Stephenson * Added video game collection type. 2005-06-12 Robby Stephenson * Added capability for recursively reading all CDDB cache files, based on patch from Marco Hofmann. 2005-06-08 Robby Stephenson * Fixed bug with file extension defaulting to .bc. 2005-06-02 Robby Stephenson * Changed Table field to allow up to 5 columns. Deprecated Table2 type. 2005-06-01 Robby Stephenson * Added Rating field type. 2005-05-31 Robby Stephenson * Fixed bug with grouping by checkbox fields. 2005-05-30 Robby Stephenson * Updated Norwegian translation. * Added Unimarc support to z39.50 importer. 2005-05-25 Robby Stephenson * Released Tellico 0.13.7. 2005-05-25 Robby Stephenson * Changed bibtex exporter to put crossref'd entries at the end. Only one level of crossref is allowed. 2005-05-19 Robby Stephenson * Fixed bug with changing between rating and normal choice field. 2005-05-18 Robby Stephenson * Updated Dutch translation, thanks to Fred Marchee. 2005-05-13 Robby Stephenson * Fixed bug with clearing table fields. * Added ONIX export, borrowing format from Alexandria. 2005-05-10 Robby Stephenson * Changed contact email to tellico-users mailing list. 2005-04-27 Robby Stephenson * Fixed corner case xml element naming for new fields. * Fixed typo on allowed and description in fields editor. 2005-04-10 Robby Stephenson * Fixed bug with having fields named after xml elements, like entry or field. 2005-04-09 Robby Stephenson * Added a PubMed search source, thanks to an XSL stylesheet from Michaël Zugaro. 2005-04-08 Robby Stephenson * Added some accelerators, thanks to patch from Felix Berger. 2005-04-07 Robby Stephenson * Added Undo/Redo framework. 2005-04-03 Robby Stephenson * Released Tellico 0.13.6. 2005-03-29 Robby Stephenson * Fixed bug with adding multiple entries from fetch dialog not added additional images. * Added Portuguese translation, thanks to Ligia Moreira. 2005-03-23 Robby Stephenson * Changed internet search dialog to clear results when running a new search. * Changed selection so that hidden items are not selected. 2005-03-16 Robby Stephenson * Added shortcuts for entry grouping and filter. 2005-03-08 Robby Stephenson * Released Tellico 0.13.5. 2005-03-02 Robby Stephenson * Updated German translation, thanks to Gerrit Albrecht. 2005-03-01 Robby Stephenson * Fixed crash for some amazon searches. * Fixed character encoding for Japanese amazon searches. 2005-02-27 Robby Stephenson * Released Tellico 0.13.4 2005-02-25 Robby Stephenson * Added a configure param to disable cddb even if kcddb headers found. 2005-02-24 Robby Stephenson * Updated bibtex translation map, fixing some bugs. * Fixed bug with Amazon search character encoding. * Changed Bibtex handler to convert {MIT} to MIT, importing and exporting. 2005-02-23 Robby Stephenson * Fixed bug with grouping being enabled for paragraphs. 2005-02-17 Robby Stephenson * Fixed bug with exporting empty groups in HTML. * Added capability for adding loan due notice to KOrganizer calendar. 2005-02-14 Robby Stephenson * Fixed bug with RIS importer messing up entry types. 2005-02-10 Robby Stephenson * Released Tellico 0.13.3. 2005-02-08 Robby Stephenson * Fixed bug in configure script for disabling amazon, thanks to Markus Brueffer. * Fixed bug with spin boxes not enabling Apply button in Config Dialog. * Fixed bug with audio file metadata import for compilations. 2005-02-05 Robby Stephenson * Update some bibtex character translations. * Released Tellico 0.13.2. 2005-02-03 Robby Stephenson * Updated IMDb fetcher. * Updated bibtex import and export to recognize {X} constructions. * Fixed bug with locale encoding for HTML export. * Changed statusbar to show tooltips for menu items. 2005-02-02 Robby Stephenson * Added France and Canada locales to Amazon.com sources. 2005-02-01 Robby Stephenson * Fixed bug with importing RIS with no final space. * Fixed Debian bug #290467 for gcc 4.0 compilation, thanks to Regis Boudin. 2005-01-28 Robby Stephenson * Removed find dialog since the filter works so much better. 2005-01-27 Robby Stephenson * Removed option for toggling entry count show in group view. * Added check-out for lending items with view. 2005-01-25 Robby Stephenson * Fixed Debian bug #292165 with bibtex export of umlauts. 2005-01-21 Robby Stephenson * Updated Swedish translation, thanks to Peter Landgren. 2005-01-20 Robby Stephenson * Added saved filters with view. * Changed IMDb cast page to decode HTML entities, thanks to Rafa Kortes. 2005-01-12 Robby Stephenson * Changed double click in the Internet Search dialog to add the entry. 2005-01-11 Robby Stephenson * Added collection report dialog. 2005-01-06 Robby Stephenson * Improved file loading efficiency somewhat. 2005-01-05 Robby Stephenson * Changed image loading to be on-demand for local zip files. 2004-12-19 Robby Stephenson * Added DCOP interface for exporting files. * Added vertical line between columns in list view. * Translated xsl entry template names. 2004-12-18 Robby Stephenson * Added DCOP interface for importing files. 2004-12-17 Robby Stephenson * Branched to 0.13.x. * Updated audio file importer to use "(Various)" for multi-artist albums. 2004-12-11 Robby Stephenson * Fixed a bug in PilotDB exporting, I think. * Added PilotDB export support for Date fields. * Released Tellico 0.13.1. 2004-12-10 Robby Stephenson * Fixed some date formatting. 2004-12-09 Robby Stephenson * Fixed auto bibtex key generation for empty keys. 2004-12-08 Robby Stephenson * Fixed Entry View to react to changes in the color palette. 2004-12-06 Robby Stephenson * Increased maz z39.50 port to 999999. * Fixed some KMAX, KMIN template issues with casts. * Added column shading for detailed view, per KDE bug 59791. 2004-12-03 Robby Stephenson * Updated Finnish translation, thanks to Tuevo Eloranta. * Updated Norwegian translation, thanks to Leif Mathis Gaup. * Fixed *BSD compile, with patch from Markus Brüffer. 2004-12-01 Robby Stephenson * Enabled relative URLs in URL fields. * Disabled running executables in URL fields. * Released Tellico 0.13. 2004-11-30 Robby Stephenson * Removed all the KStaticDeleter references. Don't get fancy. * Updated title sorts to work for articles ending with an apostrophe. * Updated audio file metadata importer to recognize albums with multiple artists and change track list accordingly. * Fixed CSV importer to properly find pre-existing, non-default fields. 2004-11-25 Robby Stephenson * Added stars for up to a 10 rating. * Added checkmark in entry templates for bool fields. 2004-11-20 Robby Stephenson * Added Spanish tips translation from ventolera. 2004-11-19 Robby Stephenson * Released Tellico 0.13pre3. 2004-11-18 Robby Stephenson * Added command-line options for loading bibtex, MODS, and RIS files. 2004-11-17 Robby Stephenson * Updated Amazon fetcher to work with more than 10 ISBN. * Updated z39.50 fetcher to work with more than 10 ISBN. * Added language lookup table to mods2tellico.xsl. * Updated lyxpipe cite to auto-generate bibtex key if necessary. * Added "load ISBN list from file" to search dialog. 2004-11-14 Robby Stephenson * Released Tellico 0.13pre2. 2004-11-12 Robby Stephenson * Improved printing speed. * Added user and password config for z39.50. * Added address field to default bibliography. 2004-11-10 Robby Stephenson * Updated French translation, thanks to Regis Boudin. * Fixed layout bug in config dialog. 2004-11-09 Robby Stephenson * Added fix similar to kde bug 86188 for including linux/cdrom.h. * Changed latex cite to separate multiple cites with ", " instead of "," to better match pybliographer. 2004-11-08 Robby Stephenson * Added host config to IMDB. * Added image download option to Amazon and IMDB. * Updated kde-common/admin/cvs.sh to allow other automake versions. * Released Tellico 0.13pre1. 2004-11-07 Robby Stephenson * Added character set config to z39.50. * Changed main document to tellico.xml. 2004-10-31 Robby Stephenson * Updated initial minimum width to 600 pixels. * Added group selection entry to collection menu. * Updated Find Dialog to remove FromBeginning (didn't make sense) 2004-10-23 Robby Stephenson * Updated HTML export and printing stylesheets a bit. 2004-10-18 Robby Stephenson * Added patch to compile on g++ 2.95 from Markus Brueffer. 2004-10-11 Robby Stephenson * Added patch from wwp to fix saving file on quit. 2004-10-02 Robby Stephenson * Added confirm message box when deleting an entry. 2004-09-23 Robby Stephenson * Changed default file textension to .tc. 2004-09-15 Robby Stephenson * Added Unrated certification to default video collection. 2004-09-14 Robby Stephenson * Renamed Bookcase to Tellico * Added IMDB fetcher. * Incremented DTD version to 7, changed root element to tellico. * Changed zip file to use maindoc.xml as do the KOffice files. 2004-09-10 Robby Stephenson * Added new icons from Virginie Quesnay. 2004-09-09 Robby Stephenson * Updated French translation, thanks to Regis Boudin. * Removed libcdda (cdparanoia) dependency, using cd-discid code instead. * Added rating widget in entry editor, using stars. 2004-09-07 Robby Stephenson * Really fixed gcc 2.95 compilation. * Added RIS importer. 2004-09-02 Robby Stephenson * Released Bookcase 0.11. 2004-09-01 Robby Stephenson * Added FreeDB importer. 2004-08-27 Robby Stephenson * Fixed compile on gcc 2.95. 2004-08-26 Robby Stephenson * Added Alexandria importer. * Added Alexandria exporter. 2004-08-25 Robby Stephenson * Updated Norwegian translation, thanks to Leif Mathis Gaup. * Read album covers from .directory files in audio file importer. 2004-08-24 Robby Stephenson * Added support for reading audio file meta-data. 2004-08-22 Robby Stephenson * Updated paragraph fields to remember line-breaks. * Released Bookcase 0.10. 2004-08-20 Robby Stephenson * Added HTML formatting to paragraphs in entry templates. * Updated German translation, thanks to Gerrit M. Albrecht. 2004-08-18 Robby Stephenson * Added Latin1Literal class to speed up string comparisons. * Added MODS import menu item. 2004-08-10 Robby Stephenson * Added "export selected entries only" option. 2004-08-09 Robby Stephenson * Fixed UI file location. * Released Bookcase 0.10pre2. 2004-08-08 Robby Stephenson * Released Bookcase 0.10pre1. * Added entry icon to fetch dialog button. 2004-08-03 Robby Stephenson * Fixed bug for exporting HTML for entries with multiple titles. * Changed HTML export to put entry files in separate directory. * Added link to parent collection file for entry templates. 2004-08-01 Robby Stephenson * Updated French translation, thanks to Rui Nibau. * Changed to show a spinbox for single number values; 2004-07-30 Robby Stephenson * Fixed bug with capitalization of words split by dash or comma, and ending with apostrophes. 2004-07-13 Robby Stephenson * Fixed bugs with enabling apply/ok buttons in fields dialog for extended properties, and disappearing groups when renaming fields. 2004-07-02 Robby Stephenson * Added collection and group view in stack. 2004-06-26 Robby Stephenson * Fixed bug with copying selected entries. 2004-06-21 Robby Stephenson * Fixed gcc 3.4 compilation bug in src/translators/btparse/err.h 2004-06-07 Robby Stephenson * Update Norwegian translation, thanks to Leif Mathis Gaup. 2004-05-27 Robby Stephenson * Released Bookcase 0.9.3. * Updated italian translation, thanks to FaUsT. 2004-05-25 Robby Stephenson * Fixed crashing bug for exporting when no fields can be grouped. 2004-05-24 Robby Stephenson * Restructured ISBN code to get rid of some old cruft. * Added patch from Regis Boudin to add French ISBN formatting and remove old copyright restricted ISBN code. 2004-05-22 Robby Stephenson * Added entry group templates. 2004-05-19 Robby Stephenson * Changed focus to move to next entry when one is deleted. * Changed document loader to allow i18n attribute indicate translation. * Fixed bug with empty group names. 2004-05-17 Robby Stephenson * Released Bookcase 0.9.2. 2004-05-15 Robby Stephenson * Fixed bug with xslt import with libxml < 2.6. * Fixed bug with losing extended properties when cloning fields/ 2004-05-10 Robby Stephenson * Added Amazon fetcher. * Added SRU Fetcher. 2004-05-07 Robby Stephenson * Fixed bug with XSLT importer. * Added MODS XSLT importer file. 2004-05-06 Robby Stephenson * Branched 0.9.x 2004-05-02 Robby Stephenson * Changed Fields Dialog to close when creating a new collection or opening one. * Removed GCJ/java checks from configure. * Released Bookcase 0.9.1 2004-04-30 Robby Stephenson * Fixed i18n extraction for UI and gettext extensions. * Removed Japanese translation because of encoding errors. * Updated CSV import to know about current fields when appending or merging 2004-04-29 Robby Stephenson * Updated German translation from Gerrit Albrecht. 2004-04-27 Robby Stephenson * Fixed bug with lyxpipe using LYXSRV insted of LYXCMD. * Changed quick filter to wait 200 ms before updating the filter. 2004-04-21 Robby Stephenson * Added wait cursor for file saving. * Fixed bug with created a double collection when failing to load the initial file. * Make sure column view updates when an image is cleared. 2004-04-18 Robby Stephenson * Released Bookcase 0.9. 2004-04-16 Robby Stephenson * Improved visibilty of image size in Fancy.xsl. * Updated Italian translation, thanks to FaUsT. * Updated Finnish translation, thanks to Teuvo. * Added hidden pref for pixmap size in detailed view. * Changed HTML exporter to use titles as filenames. 2004-04-13 Robby Stephenson * Added hidden preference for pilotdb export charset encoding. 2004-04-09 Robby Stephenson * Improved bibtex export to detect duplicates keys and add 'a'b, 'b', etc. * Released Bookcase 0.9pre1 2004-03-26 Robby Stephenson * Updated printing and HTML export to include images. * Updated Detailed View to show images, too. 2004-03-25 Robby Stephenson * Updated Italian translation, thanks to FaUsT. * Changed toolbar icon for New Entry to collection icon on top of empty mime type. 2004-03-24 Robby Stephenson * Added menu item in group view for filtering on groups. * Added config options for image sizes in printout. 2004-03-22 Robby Stephenson * Fixed another bug with HTML export character encoding. * Added config panel for bibtex quotation style and lyxpipe location 2004-03-20 Robby Stephenson * Fixed Paragraph fields to properly signal modified in the Entry Editor. * Fixed crashing bug for fields with nothing but whitespace in the datafile. * Updated printing stylesheet so that images can be included. 2004-03-19 Robby Stephenson * Changed document opening so that if the first field has the name of "_default", all the default fields will be added. 2004-03-17 Robby Stephenson * Changed Dependent fields to allow grouping. * Changed Fields Dialog to allow changing the field types, in some limited cases. 2004-03-15 Robby Stephenson * Fixed crashing bug in PilotDB export with images. * Fixed bug with "other" delimiter freezing the app. 2004-03-13 Robby Stephenson * Fixed bug with trying to reopen Untitled after converting to a bibliography. * Added support for lyxpipe and citing entries in bibliography. 2004-03-12 Robby Stephenson * Changed to be more aggressive in creating URL fields on Bibtex import. 2004-03-10 Robby Stephenson * Added Compact and Fancy entry templates. * Released Bookcase 0.8.5. 2004-03-07 Robby Stephenson * Fixed bug in Video template for when there's no Cast template. * Fixed bug with detecting old versions of gcc and vector::at. 2004-03-05 Robby Stephenson * Fixed bug with filter dialog layout and KDE 3.2. 2004-03-04 Robby Stephenson * Fixed bug with corrupt zip files when more than one entry references the same image. 2004-02-28 Robby Stephenson * Fixed the gcc 2.95 compile bug for sure. 2004-02-25 Robby Stephenson * Fixed crashing bug in Data::Entry::field(). * Fixed XSLTHandler to work for URLs, so XSLT files can reference other files. 2004-02-22 Robby Stephenson * Fixed bug with HTML entities in XSLT stylesheet params. 2004-02-20 Robby Stephenson * Fixed bug with duplicate menu items in KDE 3.2.x. * Fixed bug to properly reorder categories when reordering fields. * Released Bookcase 0.8.4. 2004-02-19 Robby Stephenson * Fixed auto-capitalize and auto-format to take affect immediately. 2004-02-18 Robby Stephenson * Added Czech translation, thanks to Robert Kratky. 2004-02-17 Robby Stephenson * Fixed compilation issues for gcc 2.95 and FreeBSD. * Changed the Config Dialog to use a semi-colon to separated the articles, prefixes, and suffixes instead of a comma, for consistency. They're still saved in the config file with a comma, though, so old options should be fine. 2004-02-14 Robby Stephenson * Fixed problem when trying to reopen last file and getting error. * Added drag & drop support for the image widget. 2004-02-13 Robby Stephenson * Updated Estonian translation, from Toomas Nigola. * Changed to remember sorting config in group view. 2004-02-12 Robby Stephenson * Fixed crashing bug when renaming a single-category field. 2004-02-11 Robby Stephenson * Changed Entry Editor to redo page layout when deleting fields. * Added merge functionality when importing collections. * Fixed bug with exporting HTML in non-utf8. 2004-02-09 Robby Stephenson * Updated Spanish translation, thanks to Quique. * Added sorting by group count. 2004-02-07 Robby Stephenson * Added workaround for layout bug in Keramik style. 2004-02-04 Robby Stephenson * Fixed saving visible columns yet again. * Changed XSLT parser to prevent all network calls. * Fixed crashing bug when deleting a field. * Fixed compilation bug when using libxml > 2.6.0 but libxslt < 1.1. * Released Bookcase 0.8.3. 2004-02-04 Robby Stephenson * Fixed file truncation for file with some Unicode characters. * Released Bookcase 0.8.2. 2004-02-03 Robby Stephenson * Released Bookcase 0.8.1. 2004-02-02 Robby Stephenson * Added Album entry template. * Added Finnish translation, thanks to Teuvo Eloranta. * Added --with-xml-catalog configure option. 2004-01-30 Robby Stephenson * Fixed compile bug with src/Makefile.am and libxslt. * Fixed bug with $datadir param in Default entry template. * Added Video entry template. * Added EAN to ISBN conversion for 978 and 979 codes. Patch from Martijn Pieters. 2004-01-27 Robby Stephenson * Fixed bug with Select All not working. * Fixed some compilation issues. * Updated French translation from Rui Nibau. 2004-01-25 Robby Stephenson * Fixed DTD for new collections. * Updated some accel keys. * Changed Requires to KDE 3.1 or higher since KZip is used. * Released Bookcase 0.8. 2004-01-23 Robby Stephenson * Released Bookcase 0.8pre1 2004-01-22 Robby Stephenson * Added Finnish translation from Teuvo Eloranta. * Added "Export to XML" option since file format is Zip now. * Switched to new XML parser in libxml2 > 2.6.0 2004-01-13 Robby Stephenson * Added new Collection menu. 2004-01-09 Robby Stephenson * Changed entry method for bibtex string macros. Triple-clicking on list view items is stupid. 2004-01-08 Robby Stephenson * Added zip file format for collections with images. 2004-01-01 Robby Stephenson * Added cut, copy, and paste functions. * Added new entry and copy entry functions. * Added find previous, select all, and deselection functions. 2003-12-31 Robby Stephenson * Changed double clicking an entry to show the editor. * Moved entry edit widget to dialog box. 2003-12-13 Robby Stephenson * Updated French translation, thanks to RNB. 2003-12-11 Robby Stephenson * Added image fields. * Changed auto-completion to account for fields with multiple values. 2003-12-07 Robby Stephenson * Updated Norwegian translation, thanks to Leif Mathis Gaup. 2003-11-25 Robby Stephenson * Fixed bug in remembering visible columns for custom fields. * Added some speed-ups in loading time. * Released Bookcase 0.7.2 2003-11-24 Robby Stephenson * Fixed another ISBN format bug for non-english publishers. 2003-11-23 Robby Stephenson * Fixed bug with auto-capitalization when global setting was turned off. * Fixed bug with not saving options for empty collections. * Fixed bug with reordering visible fields. 2003-11-21 Robby Stephenson * Added Pilot-DB export option. * Fixed bug to update status line after deleting entries. 2003-11-12 Robby Stephenson * Added Derived field type for concatenating values from other fields. * Added default collections for trading cards, coins, stamps, comic books, and wines. 2003-11-11 Robby Stephenson * Updated German tranlation, thanks to Gerrit Albrecht. * Added Swedish translation, thanks to Karolina Lindqvist. * Fixed bug with adding 2-column table. * Cut the 0.7.x branch. * Added Derived field type. 2003-11-09 Robby Stephenson * Fixed charset encoding bug. * Fixed compile for GCC 2.96. * Changed bibtex and CSV export to default to locale encoding. * Fixed bug with field editor not updating title. * Released Bookcase 0.7.1. 2003-11-08 Robby Stephenson * Released Bookcase 0.7. 2003-11-05 Robby Stephenson * Fixed the tips file translation issue. * Released Bookcase 0.7pre2. 2003-11-03 Robby Stephenson * Fixed ISBN formatting bug for non-english language publishers. * Released Bookcase 0.7pre1. 2003-10-25 Robby Stephenson * Fixed documentation compile error for KDE 3.2. * Added CSV importer. * Changed Bibtexml importer and exporter to use internal classes rather than XSL stylesheets. 2003-10-24 Robby Stephenson * Added string macro editor for Bibtex collections. * Printing now only prints visible entries by default. 2003-10-21 Robby Stephenson * Added new group for all attributes formatted as names, so Editors and Authors can be grouped together. 2003-10-10 Robby Stephenson * Changed printing to print columns as shown in the view, and group by the current grouping. * Removed old options for printing fields selection. 2003-10-04 Robby Stephenson * Added capability to reorder fields in field editor. 2003-10-03 Robby Stephenson * Imported btparse library code to use for importing Bibtex files. It has a lot of warnings, but none should be fatal. 2003-09-23 Robby Stephenson * Added "Bibtex Field" to default Bibtex collections fields to aid in exporting to Bibtex and Bibtexml. * Bumped document syntax to 4. * Changed "attribute" elements in document file to "field". * Changed all unit elements to "entry" rather than the unit name. * Changed Boolean values to save as "true" instead of an implicit value. * Added CSV exporter. 2003-09-12 Robby Stephenson * Added 2-column Table field type. 2003-09-09 Robby Stephenson * Changed boolean values to show title in group view. 2003-09-03 Robby Stephenson * Fixed bug when deleting multiple books from detailed listview. 2003-08-31 Robby Stephenson * Changed field completion to be case-insensitive. * Fixed bug with saving listview columns. 2003-08-16 Robby Stephenson * Fixed bug with reopening last saved file. 2003-08-12 Robby Stephenson * Added French translation from RNB. 2003-08-08 Robby Stephenson * Added menu item for configuring toolbars. * Added menu item for configuring shortcut keys. 2003-07-31 Robby Stephenson * Added Table field type. 2003-07-30 Robby Stephenson * Fixed bug in saving visible columns. * Improved loading time. 2003-07-29 Robby Stephenson * Implemented adding file extension (.bc) when using File->Save As and an extension filter is shown. * Added status bar text showing number of selected books when more than 1 is selected. 2003-07-24 Robby Stephenson * Added menu comands for showing/hiding the group view and editor. 2003-07-23 Robby Stephenson * Added "--nofile" command line option for bypassing the "Open last file" config setting. * Added "Tip of the Day" dialog. * Changed default for showing unit count to true. * Changed Year field type to generic Number. * Improved sorting to sort numerically for Number fields. * Added Default button to Field Editor dialog. * Added additional format option to never capitalize or format. * Fixed last open file option to no longer be over-written when Bookcase is exited with an empty document. * Cut the 0.6.x branch. 2003-07-22 Robby Stephenson * Fixed crashing bug in "Edit Fields" dialog. 2003-07-21 Robby Stephenson * Released Bookcase 0.6.5 2003-07-09 Robby Stephenson * Added Estonian translation from Toomas Nigola. 2003-07-07 Robby Stephenson * Updated German translation from Ulf-Diether Ehlert. 2003-07-01 Robby Stephenson * Fixed translation bug with category names. * Added Bulgarian translation from Boyan Ivanov. 2003-06-25 Robby Stephenson * Fixed sorting bug for empty fields. * Released Bookcase 0.6.4 2003-06-19 Robby Stephenson * Changed focus to first tab when adding new book. * Disabled multiple value option for title field in field editor. * Fixed bug with completion object not being updated when a field is changed to all auto-completion. * Fixed drawing bug with toolbar label background. 2003-06-17 Robby Stephenson * Fixed bug with surname matching too much with periods in regexp. * Added Japanese translation from Linux Magazine. * Added Dutch translation from Liese De Vos. 2003-05-30 Robby Stephenson * Fix crashing bug when opening the filter dialog on KDE 3.0. 2003-05-27 Robby Stephenson * Released Bookcase 0.6.3 2003-05-26 Robby Stephenson * Added feature where the column view remembers the previous sorted column, so that items with the same sort key are subsequently sorted by previous column. 2003-05-25 Robby Stephenson * Add Spanish translation, thanks to Quique. * Updated Norwegian translation, thanks to Leif Mathis. * Fix bug with collapse/expand all not working in group view. * Fix bug with "Find" not properly traversing the collection. * Fix bug with sorted column not being saved between document loads. * Fix bug with changed category not being reflected in edit widget. * Fix bug with name prefixes not being limited to word boundaries. 2003-05-11 Robby Stephenson * Released Bookcase 0.6.2 2003-05-10 Robby Stephenson * Fixed bug with custom fields not showing up in column popup menu. * Fixed crashing when selecting a different book after modifying the current one and not saving it. * Fixed icon bug for column view. * Prettied-up some of layout code. 2003-05-09 Robby Stephenson * Added Norwegian translation from Leif Mathis Gaup. * Fixed printing bug for books with multiple groups. 2003-05-06 Robby Stephenson * Changed initial file opening so that if a new empty file was the last viewed, then no recent file is opened at next startup. * Fixed bug with initial collection not updating edit widgets. 2003-05-05 Robby Stephenson * Released Bookcase version 0.6.1 * Fixed automake 1.7 error with configure.in.in * Fixed UIC variable usage, primarily for *BSD platforms * Fixed double encoding bug on bibtexml inport * Fixed wrong namespace on bibtexml export * Changed to use KAcceleratorManager for keyboard accels on tabs * Fixed bug with the group view icon not getting changed back to the folder 2003-05-03 Robby Stephenson * Fixed bug with editing multiple books and getting asked every time if I'm sure. * Changed modified field names in the "Edit Fields" dialog to be colored, an din italic font instead of having an asterisk in front. 2003-05-02 Robby Stephenson * Released Bookcase version 0.6 * Changed Bibtex export to use the Locale character encoding instead of UTF-8 2003-04-22 Robby Stephenson * Added a URL attribute type * Changed articles, surname prefixes, and suffixes to be case-insensitive so the config value no longer has to include both capitalized and lower-case values * Broke out the attribute format flag for cleaner code 2003-04-13 Robby Stephenson * Added multiple selection, batch editing 2003-04-12 Robby Stephenson * Added RegExp Editor button to find dialog * Added Quick and Advanced filtering in the detailed list view 2003-04-10 Robby Stephenson * Added new "person" icon for grouping when the group is a name 2003-04-09 Robby Stephenson * Convert from KTabCtrl to QTabWidget, which has more documentation and is actively developed 2003-04-08 Robby Stephenson * Fixed bug with column order not retained on save 2003-04-05 Robby Stephenson * Fixed bug with validating multiple copyright years 2003-03-25 Robby Stephenson * Added surname prefixes like 'de' and 'von' 2003-03-23 Robby Stephenson * Fixed debug mistake. * Released Bookcase version 0.5.2a 2003-03-22 Robby Stephenson * Released Bookcase version 0.5.2 2003-03-21 Robby Stephenson * Added German translation from Gerrit M. Albrecht * Fixed bugs with empty suffix and article list * Fixed some i18n issues 2003-03-18 Robby Stephenson * Added Hungarian translation from Marcel Hilzinger 2003-03-15 Robby Stephenson * Fixed types and compile problems. Thanks, Dre! * Released Bookcase version 0.5.1 2003-03-14 Robby Stephenson * Put the book count in color. * Took out general export function for now. * Released Bookcase version 0.5 2003-03-07 Robby Stephenson * Added a new printing page in the configuration dialog * Added a checkmark pixmap for the boolean fields * Added a header menu to be able to select which fields to show in the detailed list view 2003-03-02 Robby Stephenson * Fixed character encoding bug for latin2 2003-01-25 Robby Stephenson * Fixed focus bug 2003-01-19 Robby Stephenson * Changed FORMAT_VERSION to 2 * Changed document format so that attributes which allow multiple entries are saved in multiple XML elements * Changed "keywords" attribute to "keyword" * Added check for document format version so that incompatible versions are not loaded. Older versions will be properly loaded, but once saved, previous versions of Bookcase will not load the new files properly. * Changed "Language" and "Copyright Year" to allow multiple entries. 2002-12-12 Robby Stephenson * Added namespaces to document file 2002-12-11 Robby Stephenson * Added import from Bibtexml using XSLT 2002-12-08 Robby Stephenson * Added export to Bibtex using XSLT * Added export to Bibtexml using XSLT 2002-12-03 Robby Stephenson * Released Bookcase version 0.4.1 * Added a Romanian translation from Iulian Ursache 2002-11-29 Robby Stephenson * Fixed compile problems with gcc 2.95 2002-11-24 Robby Stephenson * Released Bookcase version 0.4 * Printing improvements in XSLT layout 2002-11-10 Robby Stephenson * Added an Italian translation from FaUsT 2002-11-05 Robby Stephenson * Added a new toolbar for changing the grouping of the units * Changed the bookcase.spec file to add proper files 2002-10-20 Robby Stephenson * Released Bookcase version 0.3 2002-08-27 Robby Stephenson * Added two new XSLT files * Added printing support using KHTML * Added RPM spec file to automake 2002-02-21 Robby Stephenson * Released Bookcase version 0.2 2002-02-20 Robby Stephenson * Added BCColumnView::slotShowUnit() so to ensure that the proper listview in the stack is shown. * Added BCAttribute::capitalize for auto capitalization of names and titles. 2002-02-08 Robby Stephenson * Changed selection behavior so the two listviews do not sync now. Clicking in one clears the other. 2002-02-03 Robby Stephenson * Added article and suffix list to options in config dialog. 2002-01-11 Robby Stephenson * BCListView is now BCColumnView and can flip between different collections. Woo-hoo! Now multiple collections behave properly. Also started adding configuration options. 2002-01-10 Robby Stephenson * bctabcontrol.{h,cpp} Need KTabCtl::showTab to be public, so subclassed it. 2002-01-10 Robby Stephenson * configdialog.{h,cpp} Added beginnings of configuration dialog. 2001-12-06 Robby Stephenson * bcgroupview.cpp, bcattribute.cpp Fixed the bug for formatting names with suffixes like Jr. 2001-11-05 Robby Stephenson * bookcase.h Removed the File->Close() action item. 2001-11-05 Robby Stephenson * bcgroupview.cpp Fixed the bug where clicking the collapse or expand menu item on a BCUnitItem caused the pixmap to change to a folder. 2001-11-04 Robby Stephenson * Released Bookcase version 0.1 diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 159a2e29..912d8f6b 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -1,860 +1,866 @@ include(ECMAddTests) include(ECMMarkNonGuiExecutable) SET( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} ) # formattest includes fieldformat that include core/tellico_config.h # which is generated in the build directory INCLUDE_DIRECTORIES( ${Tellico_BINARY_DIR}/src ) add_executable(entitytest entitytest.cpp ../fieldformat.cpp) ecm_mark_nongui_executable(entitytest) add_test(entitytest entitytest) ecm_mark_as_test(entitytest) TARGET_LINK_LIBRARIES(entitytest utils config Qt5::Test ) add_executable(cuecattest cuecattest.cpp) ecm_mark_nongui_executable(cuecattest) add_test(cuecattest cuecattest) ecm_mark_as_test(cuecattest) TARGET_LINK_LIBRARIES(cuecattest utils Qt5::Test) add_executable(isbntest isbntest.cpp) ecm_mark_nongui_executable(isbntest) add_test(isbntest isbntest) ecm_mark_as_test(isbntest) TARGET_LINK_LIBRARIES(isbntest utils Qt5::Test) add_executable(lccntest lccntest.cpp) ecm_mark_nongui_executable(lccntest) add_test(lccntest lccntest) ecm_mark_as_test(lccntest) TARGET_LINK_LIBRARIES(lccntest utils Qt5::Test) add_executable(lcctest lcctest.cpp ../field.cpp ../fieldformat.cpp) ecm_mark_nongui_executable(lcctest) add_test(lcctest lcctest) ecm_mark_as_test(lcctest) TARGET_LINK_LIBRARIES(lcctest tellicomodels Qt5::Test) add_executable(formattest formattest.cpp ../fieldformat.cpp) ecm_mark_nongui_executable(formattest) add_test(formattest formattest) ecm_mark_as_test(formattest) TARGET_LINK_LIBRARIES(formattest config Qt5::Test) add_executable(fieldtest fieldtest.cpp ../field.cpp ../fieldformat.cpp ../gui/urlfieldlogic.cpp) ecm_mark_nongui_executable(fieldtest) add_test(fieldtest fieldtest) ecm_mark_as_test(fieldtest) TARGET_LINK_LIBRARIES(fieldtest config utils Qt5::Test) add_executable(comparisontest comparisontest.cpp ../field.cpp ../fieldformat.cpp) ecm_mark_nongui_executable(comparisontest) add_test(comparisontest comparisontest) ecm_mark_as_test(comparisontest) TARGET_LINK_LIBRARIES(comparisontest tellicomodels Qt5::Test) add_executable(imagetest imagetest.cpp ../utils/tellico_utils.cpp ../utils/guiproxy.cpp ../utils/cursorsaver.cpp ../fieldformat.cpp) ecm_mark_nongui_executable(imagetest) add_test(imagetest imagetest) ecm_mark_as_test(imagetest) TARGET_LINK_LIBRARIES(imagetest images KF5::Archive Qt5::Test) add_executable(imagejobtest imagejobtest.cpp ../fieldformat.cpp) ecm_mark_nongui_executable(imagejobtest) add_test(imagejobtest imagejobtest) ecm_mark_as_test(imagejobtest) TARGET_LINK_LIBRARIES(imagejobtest images KF5::Archive Qt5::Test) add_executable(iso6937test iso6937test.cpp) ecm_mark_nongui_executable(iso6937test) add_test(iso6937test iso6937test) ecm_mark_as_test(iso6937test) TARGET_LINK_LIBRARIES(iso6937test utils Qt5::Test) +add_executable(iso5426test iso5426test.cpp) +ecm_mark_nongui_executable(iso5426test) +add_test(iso5426test iso5426test) +ecm_mark_as_test(iso5426test) +TARGET_LINK_LIBRARIES(iso5426test utils Qt5::Test) + SET(tellicotest_SRCS ../collection.cpp ../entry.cpp ../entrygroup.cpp ../entrycomparison.cpp ../field.cpp ../fieldformat.cpp ../filter.cpp ../borrower.cpp ../collectionfactory.cpp ../derivedvalue.cpp ../progressmanager.cpp ) add_library(tellicotest STATIC ${tellicotest_SRCS}) TARGET_LINK_LIBRARIES(tellicotest Qt5::Core Qt5::Gui KF5::I18n KF5::ConfigWidgets) ADD_DEPENDENCIES(tellicotest tellico_config) SET(translatorstest_SRCS ../translators/tellicoimporter.cpp ../translators/xsltimporter.cpp ../translators/textimporter.cpp ../translators/dataimporter.cpp ../translators/importer.cpp ../translators/tellicoxmlhandler.cpp ../translators/tellico_xml.cpp ../translators/xmlstatehandler.cpp ../translators/xslthandler.cpp ) add_library(translatorstest STATIC ${translatorstest_SRCS}) TARGET_LINK_LIBRARIES(translatorstest Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Xml KF5::I18n KF5::Archive KF5::KIOWidgets KF5::ConfigWidgets ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${LIBXSLT_EXSLT_LIBRARIES} ) set(TELLICO_TEST_LIBS tellicotest collections utils images core tellicomodels Qt5::Test KF5::KIOCore KF5::Archive ) add_executable(collectiontest collectiontest.cpp ../document.cpp ../translators/tellicoxmlexporter.cpp ../translators/tellicozipexporter.cpp ../translators/exporter.cpp ) ecm_mark_nongui_executable(collectiontest) add_test(collectiontest collectiontest) ecm_mark_as_test(collectiontest) TARGET_LINK_LIBRARIES(collectiontest translatorstest ${TELLICO_TEST_LIBS}) add_executable(documenttest documenttest.cpp ../document.cpp ../translators/tellicoxmlexporter.cpp ../translators/tellicozipexporter.cpp ../translators/exporter.cpp ) ecm_mark_nongui_executable(documenttest) add_test(documenttest documenttest) ecm_mark_as_test(documenttest) TARGET_LINK_LIBRARIES(documenttest translatorstest ${TELLICO_TEST_LIBS}) add_executable(filtertest filtertest.cpp) ecm_mark_nongui_executable(filtertest) add_test(filtertest filtertest) ecm_mark_as_test(filtertest) TARGET_LINK_LIBRARIES(filtertest gui ${TELLICO_TEST_LIBS}) add_executable(tellicomodeltest tellicomodeltest.cpp modeltest.cpp ../document.cpp ../translators/tellicoimporter.cpp ../translators/dataimporter.cpp ../translators/importer.cpp ../translators/tellicoxmlexporter.cpp ../translators/tellicozipexporter.cpp ../translators/exporter.cpp ../translators/tellicoxmlhandler.cpp ../translators/tellico_xml.cpp ../translators/xmlstatehandler.cpp ) ecm_mark_nongui_executable(tellicomodeltest) add_test(tellicomodeltest tellicomodeltest) ecm_mark_as_test(tellicomodeltest) TARGET_LINK_LIBRARIES(tellicomodeltest ${TELLICO_TEST_LIBS} ${LIBXML2_LIBRARIES}) ###################################################### add_executable(adstest adstest.cpp ../translators/adsimporter.cpp ../translators/importer.cpp ) ecm_mark_nongui_executable(adstest) add_test(adstest adstest) ecm_mark_as_test(adstest) TARGET_LINK_LIBRARIES(adstest ${TELLICO_TEST_LIBS}) add_executable(alexandriatest alexandriatest.cpp ../translators/alexandriaimporter.cpp ../translators/importer.cpp ../translators/alexandriaexporter.cpp ../translators/exporter.cpp ) ecm_mark_nongui_executable(alexandriatest) add_test(alexandriatest alexandriatest) ecm_mark_as_test(alexandriatest) TARGET_LINK_LIBRARIES(alexandriatest ${TELLICO_TEST_LIBS}) add_executable(amctest amctest.cpp ../translators/amcimporter.cpp ../translators/dataimporter.cpp ../translators/importer.cpp ) ecm_mark_nongui_executable(amctest) add_test(amctest amctest) ecm_mark_as_test(amctest) TARGET_LINK_LIBRARIES(amctest ${TELLICO_TEST_LIBS}) IF( TAGLIB_FOUND ) add_executable(audiofiletest audiofiletest.cpp ../translators/audiofileimporter.cpp ../translators/dataimporter.cpp ../translators/importer.cpp ) ecm_mark_nongui_executable(audiofiletest) add_test(audiofiletest audiofiletest) ecm_mark_as_test(audiofiletest) TARGET_LINK_LIBRARIES(audiofiletest ${TELLICO_TEST_LIBS} ${TAGLIB_LIBRARIES}) ENDIF( TAGLIB_FOUND ) add_executable(bibtextest bibtextest.cpp ../translators/bibteximporter.cpp ../translators/importer.cpp ../translators/bibtexexporter.cpp ../translators/exporter.cpp ) ecm_mark_nongui_executable(bibtextest) add_test(bibtextest bibtextest) ecm_mark_as_test(bibtextest) TARGET_LINK_LIBRARIES(bibtextest ${TELLICO_BTPARSE_LIBS} ${TELLICO_TEST_LIBS}) add_executable(bibtexmltest bibtexmltest.cpp ../translators/bibtexmlimporter.cpp ../translators/bibtexmlexporter.cpp ../translators/exporter.cpp ) ecm_mark_nongui_executable(bibtexmltest) add_test(bibtexmltest bibtexmltest) ecm_mark_as_test(bibtexmltest) TARGET_LINK_LIBRARIES(bibtexmltest translatorstest core ${TELLICO_TEST_LIBS}) add_executable(citetest citetest.cpp ../collections/bibtexcollection.cpp ../core/filehandler.cpp ) ecm_mark_nongui_executable(citetest) add_test(citetest citetest) ecm_mark_as_test(citetest) TARGET_LINK_LIBRARIES(citetest cite tellicotest config images Qt5::Test) ADD_DEPENDENCIES(citetest tellico_config) add_executable(ciwtest ciwtest.cpp ../translators/ciwimporter.cpp ../translators/importer.cpp ) ecm_mark_nongui_executable(ciwtest) add_test(ciwtest ciwtest) ecm_mark_as_test(ciwtest) TARGET_LINK_LIBRARIES(ciwtest ${TELLICO_TEST_LIBS}) add_executable(csvtest csvtest.cpp ../translators/csvparser.cpp ../translators/csvexporter.cpp ../translators/exporter.cpp ) ecm_mark_nongui_executable(csvtest) add_test(csvtest csvtest) ecm_mark_as_test(csvtest) TARGET_LINK_LIBRARIES(csvtest ${TELLICO_CSV_LIBS} translatorstest ${TELLICO_TEST_LIBS}) add_executable(delicioustest delicioustest.cpp ../translators/deliciousimporter.cpp ) ecm_mark_nongui_executable(delicioustest) add_test(delicioustest delicioustest) ecm_mark_as_test(delicioustest) TARGET_LINK_LIBRARIES(delicioustest rtf2html-tellico translatorstest ${TELLICO_TEST_LIBS}) add_executable(filelistingtest filelistingtest.cpp ../translators/filelistingimporter.cpp ../translators/xmphandler.cpp ) ecm_mark_nongui_executable(filelistingtest) add_test(filelistingtest filelistingtest) ecm_mark_as_test(filelistingtest) TARGET_LINK_LIBRARIES(filelistingtest translatorstest ${TELLICO_TEST_LIBS} KF5::Solid ) IF( KF5FileMetaData_FOUND ) TARGET_LINK_LIBRARIES(filelistingtest KF5::FileMetaData) ENDIF( KF5FileMetaData_FOUND ) IF( Exempi_FOUND ) TARGET_LINK_LIBRARIES(filelistingtest ${Exempi_LIBRARIES}) ENDIF( Exempi_FOUND ) add_executable(gcstartest gcstartest.cpp ../translators/gcstarimporter.cpp ../translators/gcstarexporter.cpp ../translators/tellicoxmlexporter.cpp ../translators/tellicozipexporter.cpp ../translators/exporter.cpp ../document.cpp ) ecm_mark_nongui_executable(gcstartest) add_test(gcstartest gcstartest) ecm_mark_as_test(gcstartest) TARGET_LINK_LIBRARIES(gcstartest translatorstest ${TELLICO_TEST_LIBS}) add_executable(griffithtest griffithtest.cpp ../translators/griffithimporter.cpp ) ecm_mark_nongui_executable(griffithtest) add_test(griffithtest griffithtest) ecm_mark_as_test(griffithtest) TARGET_LINK_LIBRARIES(griffithtest translatorstest ${TELLICO_TEST_LIBS}) add_executable(htmlexportertest htmlexportertest.cpp ../translators/htmlexporter.cpp ../translators/tellicoxmlexporter.cpp ../translators/tellicozipexporter.cpp ../translators/exporter.cpp ../document.cpp ) ecm_mark_nongui_executable(htmlexportertest) add_test(htmlexportertest htmlexportertest) ecm_mark_as_test(htmlexportertest) TARGET_LINK_LIBRARIES(htmlexportertest translatorstest ${TELLICO_TEST_LIBS}) add_executable(modstest modstest.cpp) ecm_mark_nongui_executable(modstest) add_test(modstest modstest) ecm_mark_as_test(modstest) TARGET_LINK_LIBRARIES(modstest translatorstest ${TELLICO_TEST_LIBS}) add_executable(referencertest referencertest.cpp ../translators/referencerimporter.cpp ) ecm_mark_nongui_executable(referencertest) add_test(referencertest referencertest) ecm_mark_as_test(referencertest) TARGET_LINK_LIBRARIES(referencertest translatorstest ${TELLICO_TEST_LIBS}) add_executable(ristest ristest.cpp ../translators/risimporter.cpp ../translators/importer.cpp ) ecm_mark_nongui_executable(ristest) add_test(ristest ristest) ecm_mark_as_test(ristest) TARGET_LINK_LIBRARIES(ristest ${TELLICO_TEST_LIBS}) add_executable(tellicoreadtest tellicoreadtest.cpp ../translators/tellicoxmlexporter.cpp ../translators/tellicozipexporter.cpp ../translators/exporter.cpp ../document.cpp ) ecm_mark_nongui_executable(tellicoreadtest) add_test(tellicoreadtest tellicoreadtest) ecm_mark_as_test(tellicoreadtest) TARGET_LINK_LIBRARIES(tellicoreadtest translatorstest ${TELLICO_TEST_LIBS}) add_executable(vinoxmltest vinoxmltest.cpp ../translators/vinoxmlimporter.cpp ) ecm_mark_nongui_executable(vinoxmltest) add_test(vinoxmltest vinoxmltest) ecm_mark_as_test(vinoxmltest) TARGET_LINK_LIBRARIES(vinoxmltest translatorstest ${TELLICO_TEST_LIBS}) SET(fetcherstest_SRCS ../fetch/fetcher.cpp ../fetch/fetcherjob.cpp ../fetch/fetchresult.cpp ../fetch/fetchmanager.cpp ../fetch/messagehandler.cpp ../fetch/configwidget.cpp ../document.cpp ../translators/tellicoxmlexporter.cpp ../translators/tellicozipexporter.cpp ../translators/exporter.cpp ) # FetchManager links to SRUFetcher for the default sources # so have to include everything it needs SET(fetcherstest_SRCS ${fetcherstest_SRCS} ../fetch/srufetcher.cpp ../fetch/xmlfetcher.cpp ../gui/lineedit.cpp ../gui/combobox.cpp ../gui/stringmapwidget.cpp ) add_library(fetcherstest STATIC ${fetcherstest_SRCS}) TARGET_LINK_LIBRARIES(fetcherstest translatorstest Qt5::Core Qt5::Gui Qt5::DBus KF5::ConfigCore KF5::ConfigGui KF5::ConfigWidgets KF5::I18n KF5::Archive KF5::IconThemes KF5::XmlGui KF5::SonnetCore KF5::SonnetUi ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${LIBXSLT_EXSLT_LIBRARIES} ) ADD_DEPENDENCIES(fetcherstest tellico_config) IF(${KF5KIO_VERSION} VERSION_GREATER "5.18.0") TARGET_LINK_LIBRARIES(fetcherstest KF5::KIOGui ) ENDIF(${KF5KIO_VERSION} VERSION_GREATER "5.18.0") # the PDF importer uses CrossRefFetcher, so include the test in the fetchers add_executable(pdftest pdftest.cpp ../translators/pdfimporter.cpp ../translators/xmphandler.cpp ../entryupdatejob.cpp ) ecm_mark_nongui_executable(pdftest) add_test(pdftest pdftest) ecm_mark_as_test(pdftest) TARGET_LINK_LIBRARIES(pdftest translatorstest fetcherstest ${TELLICO_TEST_LIBS}) IF( Exempi_FOUND ) TARGET_LINK_LIBRARIES(pdftest ${Exempi_LIBRARIES}) ENDIF( Exempi_FOUND ) IF( Poppler_Qt5_FOUND ) TARGET_LINK_LIBRARIES(pdftest Poppler::Qt5) ENDIF( Poppler_Qt5_FOUND ) # fetcher tests from here down IF(BUILD_FETCHER_TESTS) add_executable(entryupdatejobtest entryupdatejobtest.cpp ../entryupdatejob.cpp ../fetch/arxivfetcher.cpp ) ecm_mark_nongui_executable(entryupdatejobtest) add_test(entryupdatejobtest entryupdatejobtest) ecm_mark_as_test(entryupdatejobtest) TARGET_LINK_LIBRARIES(entryupdatejobtest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(allocinefetchertest allocinefetchertest.cpp abstractfetchertest.cpp ../fetch/allocinefetcher.cpp ../fetch/execexternalfetcher.cpp ../translators/bibteximporter.cpp ../translators/risimporter.cpp ../gui/collectiontypecombo.cpp ) ecm_mark_nongui_executable(allocinefetchertest) add_test(allocinefetchertest allocinefetchertest) ecm_mark_as_test(allocinefetchertest) # SonnetCore is needed for GUI::LineEdit TARGET_LINK_LIBRARIES(allocinefetchertest fetcherstest translatorstest newstuff ${TELLICO_BTPARSE_LIBS} ${TELLICO_TEST_LIBS} ) add_executable(amazonfetchertest amazonfetchertest.cpp abstractfetchertest.cpp ../fetch/amazonfetcher.cpp ../fetch/amazonrequest.cpp ../fetch/messagelogger.cpp ) ecm_mark_nongui_executable(amazonfetchertest) add_test(amazonfetchertest amazonfetchertest) ecm_mark_as_test(amazonfetchertest) TARGET_LINK_LIBRARIES(amazonfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(animenfofetchertest animenfofetchertest.cpp abstractfetchertest.cpp ../fetch/animenfofetcher.cpp ) ecm_mark_nongui_executable(animenfofetchertest) add_test(animenfofetchertest animenfofetchertest) ecm_mark_as_test(animenfofetchertest) TARGET_LINK_LIBRARIES(animenfofetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(arxivfetchertest arxivfetchertest.cpp abstractfetchertest.cpp ../fetch/arxivfetcher.cpp ) ecm_mark_nongui_executable(arxivfetchertest) add_test(arxivfetchertest arxivfetchertest) ecm_mark_as_test(arxivfetchertest) TARGET_LINK_LIBRARIES(arxivfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(bedethequefetchertest bedethequefetchertest.cpp abstractfetchertest.cpp ../fetch/bedethequefetcher.cpp ) ecm_mark_nongui_executable(bedethequefetchertest) add_test(bedethequefetchertest bedethequefetchertest) ecm_mark_as_test(bedethequefetchertest) TARGET_LINK_LIBRARIES(bedethequefetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(bibliosharefetchertest bibliosharefetchertest.cpp abstractfetchertest.cpp ../fetch/bibliosharefetcher.cpp ) ecm_mark_nongui_executable(bibliosharefetchertest) add_test(bibliosharefetchertest bibliosharefetchertest) ecm_mark_as_test(bibliosharefetchertest) TARGET_LINK_LIBRARIES(bibliosharefetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(boardgamegeekfetchertest boardgamegeekfetchertest.cpp abstractfetchertest.cpp ../fetch/boardgamegeekfetcher.cpp ) ecm_mark_nongui_executable(boardgamegeekfetchertest) add_test(boardgamegeekfetchertest boardgamegeekfetchertest) ecm_mark_as_test(boardgamegeekfetchertest) TARGET_LINK_LIBRARIES(boardgamegeekfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(comicvinefetchertest comicvinefetchertest.cpp abstractfetchertest.cpp ../fetch/comicvinefetcher.cpp ) ecm_mark_nongui_executable(comicvinefetchertest) add_test(comicvinefetchertest comicvinefetchertest) ecm_mark_as_test(comicvinefetchertest) TARGET_LINK_LIBRARIES(comicvinefetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(colnectfetchertest colnectfetchertest.cpp abstractfetchertest.cpp ../fetch/colnectfetcher.cpp ) ecm_mark_nongui_executable(colnectfetchertest) add_test(colnectfetchertest colnectfetchertest) ecm_mark_as_test(colnectfetchertest) TARGET_LINK_LIBRARIES(colnectfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(crossreffetchertest crossreffetchertest.cpp abstractfetchertest.cpp ../fetch/crossreffetcher.cpp ) ecm_mark_nongui_executable(crossreffetchertest) add_test(crossreffetchertest crossreffetchertest) ecm_mark_as_test(crossreffetchertest) TARGET_LINK_LIBRARIES(crossreffetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(darkhorsefetchertest darkhorsefetchertest.cpp abstractfetchertest.cpp ../fetch/execexternalfetcher.cpp ../translators/bibteximporter.cpp ../translators/risimporter.cpp ../gui/collectiontypecombo.cpp ) ecm_mark_nongui_executable(darkhorsefetchertest) add_test(darkhorsefetchertest darkhorsefetchertest) ecm_mark_as_test(darkhorsefetchertest) TARGET_LINK_LIBRARIES(darkhorsefetchertest fetcherstest newstuff ${TELLICO_BTPARSE_LIBS} ${TELLICO_TEST_LIBS} ) add_executable(dbcfetchertest dbcfetchertest.cpp abstractfetchertest.cpp ../fetch/dbcfetcher.cpp ) ecm_mark_nongui_executable(dbcfetchertest) add_test(dbcfetchertest dbcfetchertest) ecm_mark_as_test(dbcfetchertest) TARGET_LINK_LIBRARIES(dbcfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(dblpfetchertest dblpfetchertest.cpp abstractfetchertest.cpp ../fetch/dblpfetcher.cpp ) ecm_mark_nongui_executable(dblpfetchertest) add_test(dblpfetchertest dblpfetchertest) ecm_mark_as_test(dblpfetchertest) TARGET_LINK_LIBRARIES(dblpfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(discogsfetchertest discogsfetchertest.cpp abstractfetchertest.cpp ../fetch/discogsfetcher.cpp ) ecm_mark_nongui_executable(discogsfetchertest) add_test(discogsfetchertest discogsfetchertest) ecm_mark_as_test(discogsfetchertest) TARGET_LINK_LIBRARIES(discogsfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(doubanfetchertest doubanfetchertest.cpp abstractfetchertest.cpp ../fetch/doubanfetcher.cpp ) ecm_mark_nongui_executable(doubanfetchertest) add_test(doubanfetchertest doubanfetchertest) ecm_mark_as_test(doubanfetchertest) TARGET_LINK_LIBRARIES(doubanfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(dvdfrfetchertest dvdfrfetchertest.cpp abstractfetchertest.cpp ../fetch/dvdfrfetcher.cpp ) ecm_mark_nongui_executable(dvdfrfetchertest) add_test(dvdfrfetchertest dvdfrfetchertest) ecm_mark_as_test(dvdfrfetchertest) TARGET_LINK_LIBRARIES(dvdfrfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(entrezfetchertest entrezfetchertest.cpp abstractfetchertest.cpp ../fetch/entrezfetcher.cpp ) ecm_mark_nongui_executable(entrezfetchertest) add_test(entrezfetchertest entrezfetchertest) ecm_mark_as_test(entrezfetchertest) TARGET_LINK_LIBRARIES(entrezfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(externalfetchertest externalfetchertest.cpp abstractfetchertest.cpp ../fetch/execexternalfetcher.cpp ../translators/bibteximporter.cpp ../translators/risimporter.cpp ../gui/collectiontypecombo.cpp ) ecm_mark_nongui_executable(externalfetchertest) add_test(externalfetchertest externalfetchertest) ecm_mark_as_test(externalfetchertest) TARGET_LINK_LIBRARIES(externalfetchertest fetcherstest newstuff ${TELLICO_BTPARSE_LIBS} ${TELLICO_TEST_LIBS} KF5::SonnetCore KF5::SonnetUi KF5::XmlGui ) add_executable(filmasterfetchertest filmasterfetchertest.cpp abstractfetchertest.cpp ../fetch/filmasterfetcher.cpp ) ecm_mark_nongui_executable(filmasterfetchertest) add_test(filmasterfetchertest filmasterfetchertest) ecm_mark_as_test(filmasterfetchertest) TARGET_LINK_LIBRARIES(filmasterfetchertest fetcherstest translatorstest ${TELLICO_TEST_LIBS}) # running gcstar in the fetcher is really unreliable add_executable(gcstarfetchertest gcstarfetchertest.cpp abstractfetchertest ../fetch/gcstarpluginfetcher.cpp ../fetch/gcstarthread.cpp ../translators/gcstarimporter.cpp ../gui/collectiontypecombo.cpp ) ecm_mark_nongui_executable(gcstarfetchertest) #add_test(gcstarfetchertest gcstarfetchertest) #ecm_mark_as_test(gcstarfetchertest) TARGET_LINK_LIBRARIES(gcstarfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(giantbombfetchertest giantbombfetchertest.cpp abstractfetchertest.cpp ../fetch/giantbombfetcher.cpp ) ecm_mark_nongui_executable(giantbombfetchertest) add_test(giantbombfetchertest giantbombfetchertest) ecm_mark_as_test(giantbombfetchertest) TARGET_LINK_LIBRARIES(giantbombfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(googlebookfetchertest googlebookfetchertest.cpp abstractfetchertest.cpp ../fetch/googlebookfetcher.cpp ) ecm_mark_nongui_executable(googlebookfetchertest) add_test(googlebookfetchertest googlebookfetchertest) ecm_mark_as_test(googlebookfetchertest) TARGET_LINK_LIBRARIES(googlebookfetchertest fetcherstest translatorstest ${TELLICO_TEST_LIBS}) add_executable(googlescholarfetchertest googlescholarfetchertest.cpp abstractfetchertest.cpp ../fetch/googlescholarfetcher.cpp ../translators/bibteximporter.cpp ) ecm_mark_nongui_executable(googlescholarfetchertest) add_test(googlescholarfetchertest googlescholarfetchertest) ecm_mark_as_test(googlescholarfetchertest) TARGET_LINK_LIBRARIES(googlescholarfetchertest fetcherstest ${TELLICO_BTPARSE_LIBS} ${TELLICO_TEST_LIBS}) add_executable(hathitrustfetchertest hathitrustfetchertest.cpp abstractfetchertest.cpp ../fetch/hathitrustfetcher.cpp ) ecm_mark_nongui_executable(hathitrustfetchertest) add_test(hathitrustfetchertest hathitrustfetchertest) ecm_mark_as_test(hathitrustfetchertest) TARGET_LINK_LIBRARIES(hathitrustfetchertest fetcherstest translatorstest ${TELLICO_TEST_LIBS}) add_executable(ibsfetchertest ibsfetchertest.cpp abstractfetchertest.cpp ../fetch/ibsfetcher.cpp ) ecm_mark_nongui_executable(ibsfetchertest) add_test(ibsfetchertest ibsfetchertest) ecm_mark_as_test(ibsfetchertest) TARGET_LINK_LIBRARIES(ibsfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(igdbfetchertest igdbfetchertest.cpp abstractfetchertest.cpp ../fetch/igdbfetcher.cpp ) ecm_mark_nongui_executable(igdbfetchertest) add_test(igdbfetchertest igdbfetchertest) ecm_mark_as_test(igdbfetchertest) TARGET_LINK_LIBRARIES(igdbfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(imdbfetchertest imdbfetchertest.cpp abstractfetchertest.cpp ../fetch/imdbfetcher.cpp ../gui/listwidgetitem.cpp ) ecm_mark_nongui_executable(imdbfetchertest) add_test(imdbfetchertest imdbfetchertest) ecm_mark_as_test(imdbfetchertest) TARGET_LINK_LIBRARIES(imdbfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(isbndbfetchertest isbndbfetchertest.cpp abstractfetchertest.cpp ../fetch/isbndbfetcher.cpp ) ecm_mark_nongui_executable(isbndbfetchertest) add_test(isbndbfetchertest isbndbfetchertest) ecm_mark_as_test(isbndbfetchertest) TARGET_LINK_LIBRARIES(isbndbfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(kinofetchertest kinofetchertest.cpp abstractfetchertest.cpp ../fetch/kinofetcher.cpp ) ecm_mark_nongui_executable(kinofetchertest) add_test(kinofetchertest kinofetchertest) ecm_mark_as_test(kinofetchertest) TARGET_LINK_LIBRARIES(kinofetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(kinopoiskfetchertest kinopoiskfetchertest.cpp abstractfetchertest.cpp ../fetch/kinopoiskfetcher.cpp ) ecm_mark_nongui_executable(kinopoiskfetchertest) add_test(kinopoiskfetchertest kinopoiskfetchertest) ecm_mark_as_test(kinopoiskfetchertest) TARGET_LINK_LIBRARIES(kinopoiskfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(kinoteatrfetchertest kinoteatrfetchertest.cpp abstractfetchertest.cpp ../fetch/kinoteatrfetcher.cpp ) ecm_mark_nongui_executable(kinoteatrfetchertest) add_test(kinoteatrfetchertest kinoteatrfetchertest) ecm_mark_as_test(kinoteatrfetchertest) TARGET_LINK_LIBRARIES(kinoteatrfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(mobygamesfetchertest mobygamesfetchertest.cpp abstractfetchertest.cpp ../fetch/mobygamesfetcher.cpp ) ecm_mark_nongui_executable(mobygamesfetchertest) add_test(mobygamesfetchertest mobygamesfetchertest) ecm_mark_as_test(mobygamesfetchertest) TARGET_LINK_LIBRARIES(mobygamesfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(moviemeterfetchertest moviemeterfetchertest.cpp abstractfetchertest.cpp ../fetch/moviemeterfetcher.cpp ) ecm_mark_nongui_executable(moviemeterfetchertest) add_test(moviemeterfetchertest moviemeterfetchertest) ecm_mark_as_test(moviemeterfetchertest) TARGET_LINK_LIBRARIES(moviemeterfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(mrlookupfetchertest mrlookupfetchertest.cpp abstractfetchertest.cpp ../fetch/mrlookupfetcher.cpp ../translators/bibteximporter.cpp ) ecm_mark_nongui_executable(mrlookupfetchertest) add_test(mrlookupfetchertest mrlookupfetchertest) ecm_mark_as_test(mrlookupfetchertest) TARGET_LINK_LIBRARIES(mrlookupfetchertest fetcherstest ${TELLICO_BTPARSE_LIBS} ${TELLICO_TEST_LIBS}) add_executable(musicbrainzfetchertest musicbrainzfetchertest.cpp abstractfetchertest.cpp ../fetch/musicbrainzfetcher.cpp ) ecm_mark_nongui_executable(musicbrainzfetchertest) add_test(musicbrainzfetchertest musicbrainzfetchertest) ecm_mark_as_test(musicbrainzfetchertest) TARGET_LINK_LIBRARIES(musicbrainzfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(openlibraryfetchertest openlibraryfetchertest.cpp abstractfetchertest.cpp ../fetch/openlibraryfetcher.cpp ) ecm_mark_nongui_executable(openlibraryfetchertest) add_test(openlibraryfetchertest openlibraryfetchertest) ecm_mark_as_test(openlibraryfetchertest) TARGET_LINK_LIBRARIES(openlibraryfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(omdbfetchertest omdbfetchertest.cpp abstractfetchertest.cpp ../fetch/omdbfetcher.cpp ) ecm_mark_nongui_executable(omdbfetchertest) add_test(omdbfetchertest omdbfetchertest) ecm_mark_as_test(omdbfetchertest) TARGET_LINK_LIBRARIES(omdbfetchertest fetcherstest translatorstest ${TELLICO_TEST_LIBS}) add_executable(springerfetchertest springerfetchertest.cpp abstractfetchertest.cpp ../fetch/springerfetcher.cpp ) ecm_mark_nongui_executable(springerfetchertest) add_test(springerfetchertest springerfetchertest) ecm_mark_as_test(springerfetchertest) TARGET_LINK_LIBRARIES(springerfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(srufetchertest srufetchertest.cpp abstractfetchertest.cpp ) ecm_mark_nongui_executable(srufetchertest) add_test(srufetchertest srufetchertest) ecm_mark_as_test(srufetchertest) # Sonnet needed for gui/lineedit TARGET_LINK_LIBRARIES(srufetchertest fetcherstest ${TELLICO_TEST_LIBS} ) add_executable(thegamesdbfetchertest thegamesdbfetchertest.cpp abstractfetchertest.cpp ../fetch/thegamesdbfetcher.cpp ) ecm_mark_nongui_executable(thegamesdbfetchertest) add_test(thegamesdbfetchertest thegamesdbfetchertest) ecm_mark_as_test(thegamesdbfetchertest) TARGET_LINK_LIBRARIES(thegamesdbfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(themoviedbfetchertest themoviedbfetchertest.cpp abstractfetchertest.cpp ../fetch/themoviedbfetcher.cpp ) ecm_mark_nongui_executable(themoviedbfetchertest) add_test(themoviedbfetchertest themoviedbfetchertest) ecm_mark_as_test(themoviedbfetchertest) TARGET_LINK_LIBRARIES(themoviedbfetchertest fetcherstest translatorstest ${TELLICO_TEST_LIBS}) add_executable(videogamegeekfetchertest videogamegeekfetchertest.cpp abstractfetchertest.cpp ../fetch/videogamegeekfetcher.cpp ) ecm_mark_nongui_executable(videogamegeekfetchertest) add_test(videogamegeekfetchertest videogamegeekfetchertest) ecm_mark_as_test(videogamegeekfetchertest) TARGET_LINK_LIBRARIES(videogamegeekfetchertest fetcherstest ${TELLICO_TEST_LIBS}) add_executable(vndbfetchertest vndbfetchertest.cpp abstractfetchertest.cpp ../fetch/vndbfetcher.cpp ) ecm_mark_nongui_executable(vndbfetchertest) add_test(vndbfetchertest vndbfetchertest) ecm_mark_as_test(vndbfetchertest) TARGET_LINK_LIBRARIES(vndbfetchertest fetcherstest ${TELLICO_TEST_LIBS}) IF( Yaz_FOUND ) add_executable(z3950fetchertest z3950fetchertest.cpp abstractfetchertest.cpp ../fetch/z3950fetcher.cpp ../fetch/z3950connection.cpp ../translators/grs1importer.cpp ../translators/adsimporter.cpp ) ecm_mark_nongui_executable(z3950fetchertest) add_test(z3950fetchertest z3950fetchertest) ecm_mark_as_test(z3950fetchertest) TARGET_LINK_LIBRARIES(z3950fetchertest fetcherstest ${Yaz_LIBRARIES} ${TELLICO_TEST_LIBS} ) ENDIF( Yaz_FOUND ) ENDIF(BUILD_FETCHER_TESTS) diff --git a/src/tests/iso5426test.cpp b/src/tests/iso5426test.cpp new file mode 100644 index 00000000..92753224 --- /dev/null +++ b/src/tests/iso5426test.cpp @@ -0,0 +1,658 @@ +/*************************************************************************** + Copyright (C) 2017 Robby Stephenson + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + * * + ***************************************************************************/ + +#include "iso5426test.h" +#include "../utils/iso5426converter.h" + +#include + +QTEST_APPLESS_MAIN( Iso5426Test ) + +void Iso5426Test::testStrings() { + QFETCH(QString, output); + QFETCH(QByteArray, input); + + QCOMPARE(Tellico::Iso5426Converter::toUtf8(input), output); +} + +void Iso5426Test::testStrings_data() { + QTest::addColumn("output"); + QTest::addColumn("input"); + + QTest::newRow("lowercase") << QStringLiteral("abcdefghijklmnopqrstuvwxyz") << QByteArray("abcdefghijklmnopqrstuvwxyz"); + QTest::newRow("uppercase") << QStringLiteral("ABCDEFGHIJKLMNOPQRSTUVWXYZ") << QByteArray("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + QTest::newRow("numbers") << QStringLiteral("1234567890") << QByteArray("1234567890"); + QTest::newRow("symbols") << QStringLiteral("`-=[]\\;',./~!@#$%^&*()_+{}|:\"<>?") << QByteArray("`-=[]\\;',./~!@#$%^&*()_+{}|:\"<>?"); + // have to string concatenation since the hex looks for any length of valid characters +// QTest::newRow("symbols") << QStringLiteral("abcdefgäöüậ") << QByteArray("abcdefg\xc8" "a\xc8" "o\xc8" "u\xc3\xd6" "a"); +} + +void Iso5426Test::testCharacters() { + QFETCH(QString, output); + QFETCH(QByteArray, input); + + QCOMPARE(Tellico::Iso5426Converter::toUtf8(input), output); +} + +// https://bitbucket.org/tiran/smc.bibencodings/src/default/smc/bibencodings/iso5426.py +void Iso5426Test::testCharacters_data() { + QTest::addColumn("output"); + QTest::addColumn("input"); + + QTest::newRow("0020") << QStringLiteral("\u0020") << QByteArray(" "); // SPACE + QTest::newRow("0021") << QStringLiteral("\u0021") << QByteArray("!"); // EXCLAMATION MARK + QTest::newRow("0022") << QStringLiteral("\u0022") << QByteArray("\""); // QUOTATION MARK + QTest::newRow("0023") << QStringLiteral("\u0023") << QByteArray("#"); // NUMBER SIGN + QTest::newRow("0025") << QStringLiteral("\u0025") << QByteArray("%"); // PERCENT SIGN + QTest::newRow("0026") << QStringLiteral("\u0026") << QByteArray("&"); // AMPERSAND + QTest::newRow("0027") << QStringLiteral("\u0027") << QByteArray("'"); // APOSTROPHE + QTest::newRow("0028") << QStringLiteral("\u0028") << QByteArray("("); // LEFT PARENTHESIS + QTest::newRow("0029") << QStringLiteral("\u0029") << QByteArray(")"); // RIGHT PARENTHESIS + QTest::newRow("002a") << QStringLiteral("\u002a") << QByteArray("*"); // ASTERISK + QTest::newRow("002b") << QStringLiteral("\u002b") << QByteArray("+"); // PLUS SIGN + QTest::newRow("002c") << QStringLiteral("\u002c") << QByteArray(","); // COMMA + QTest::newRow("002d") << QStringLiteral("\u002d") << QByteArray("-"); // HYPHEN-MINUS + QTest::newRow("002e") << QStringLiteral("\u002e") << QByteArray("."); // FULL STOP + QTest::newRow("002f") << QStringLiteral("\u002f") << QByteArray("/"); // SOLIDUS + QTest::newRow("0030") << QStringLiteral("\u0030") << QByteArray("0"); // DIGIT ZERO + QTest::newRow("0031") << QStringLiteral("\u0031") << QByteArray("1"); // DIGIT ONE + QTest::newRow("0032") << QStringLiteral("\u0032") << QByteArray("2"); // DIGIT TWO + QTest::newRow("0033") << QStringLiteral("\u0033") << QByteArray("3"); // DIGIT THREE + QTest::newRow("0034") << QStringLiteral("\u0034") << QByteArray("4"); // DIGIT FOUR + QTest::newRow("0035") << QStringLiteral("\u0035") << QByteArray("5"); // DIGIT FIVE + QTest::newRow("0036") << QStringLiteral("\u0036") << QByteArray("6"); // DIGIT SIX + QTest::newRow("0037") << QStringLiteral("\u0037") << QByteArray("7"); // DIGIT SEVEN + QTest::newRow("0038") << QStringLiteral("\u0038") << QByteArray("8"); // DIGIT EIGHT + QTest::newRow("0039") << QStringLiteral("\u0039") << QByteArray("9"); // DIGIT NINE + QTest::newRow("003a") << QStringLiteral("\u003a") << QByteArray(":"); // COLON + QTest::newRow("003b") << QStringLiteral("\u003b") << QByteArray(";"); // SEMICOLON + QTest::newRow("003c") << QStringLiteral("\u003c") << QByteArray("<"); // LESS-THAN SIGN + QTest::newRow("003d") << QStringLiteral("\u003d") << QByteArray("="); // EQUALS SIGN + QTest::newRow("003e") << QStringLiteral("\u003e") << QByteArray(">"); // GREATER-THAN SIGN + QTest::newRow("003f") << QStringLiteral("\u003f") << QByteArray("?"); // QUESTION MARK + QTest::newRow("0040") << QStringLiteral("\u0040") << QByteArray("@"); // COMMERCIAL AT + QTest::newRow("0041") << QStringLiteral("\u0041") << QByteArray("A"); // LATIN CAPITAL LETTER A + QTest::newRow("0042") << QStringLiteral("\u0042") << QByteArray("B"); // LATIN CAPITAL LETTER B + QTest::newRow("0043") << QStringLiteral("\u0043") << QByteArray("C"); // LATIN CAPITAL LETTER C + QTest::newRow("0044") << QStringLiteral("\u0044") << QByteArray("D"); // LATIN CAPITAL LETTER D + QTest::newRow("0045") << QStringLiteral("\u0045") << QByteArray("E"); // LATIN CAPITAL LETTER E + QTest::newRow("0046") << QStringLiteral("\u0046") << QByteArray("F"); // LATIN CAPITAL LETTER F + QTest::newRow("0047") << QStringLiteral("\u0047") << QByteArray("G"); // LATIN CAPITAL LETTER G + QTest::newRow("0048") << QStringLiteral("\u0048") << QByteArray("H"); // LATIN CAPITAL LETTER H + QTest::newRow("0049") << QStringLiteral("\u0049") << QByteArray("I"); // LATIN CAPITAL LETTER I + QTest::newRow("004a") << QStringLiteral("\u004a") << QByteArray("J"); // LATIN CAPITAL LETTER J + QTest::newRow("004b") << QStringLiteral("\u004b") << QByteArray("K"); // LATIN CAPITAL LETTER K + QTest::newRow("004c") << QStringLiteral("\u004c") << QByteArray("L"); // LATIN CAPITAL LETTER L + QTest::newRow("004d") << QStringLiteral("\u004d") << QByteArray("M"); // LATIN CAPITAL LETTER M + QTest::newRow("004e") << QStringLiteral("\u004e") << QByteArray("N"); // LATIN CAPITAL LETTER N + QTest::newRow("004f") << QStringLiteral("\u004f") << QByteArray("O"); // LATIN CAPITAL LETTER O + QTest::newRow("0050") << QStringLiteral("\u0050") << QByteArray("P"); // LATIN CAPITAL LETTER P + QTest::newRow("0051") << QStringLiteral("\u0051") << QByteArray("Q"); // LATIN CAPITAL LETTER Q + QTest::newRow("0052") << QStringLiteral("\u0052") << QByteArray("R"); // LATIN CAPITAL LETTER R + QTest::newRow("0053") << QStringLiteral("\u0053") << QByteArray("S"); // LATIN CAPITAL LETTER S + QTest::newRow("0054") << QStringLiteral("\u0054") << QByteArray("T"); // LATIN CAPITAL LETTER T + QTest::newRow("0055") << QStringLiteral("\u0055") << QByteArray("U"); // LATIN CAPITAL LETTER U + QTest::newRow("0056") << QStringLiteral("\u0056") << QByteArray("V"); // LATIN CAPITAL LETTER V + QTest::newRow("0057") << QStringLiteral("\u0057") << QByteArray("W"); // LATIN CAPITAL LETTER W + QTest::newRow("0058") << QStringLiteral("\u0058") << QByteArray("X"); // LATIN CAPITAL LETTER X + QTest::newRow("0059") << QStringLiteral("\u0059") << QByteArray("Y"); // LATIN CAPITAL LETTER Y + QTest::newRow("005a") << QStringLiteral("\u005a") << QByteArray("Z"); // LATIN CAPITAL LETTER Z + QTest::newRow("005b") << QStringLiteral("\u005b") << QByteArray("["); // LEFT SQUARE BRACKET + QTest::newRow("005c") << QStringLiteral("\u005c") << QByteArray("\\"); // REVERSE SOLIDUS + QTest::newRow("005d") << QStringLiteral("\u005d") << QByteArray("]"); // RIGHT SQUARE BRACKET + QTest::newRow("005e") << QStringLiteral("\u005e") << QByteArray("^"); // CIRCUMFLEX ACCENT + QTest::newRow("005f") << QStringLiteral("\u005f") << QByteArray("_"); // LOW LINE + QTest::newRow("0060") << QStringLiteral("\u0060") << QByteArray("`"); // GRAVE ACCENT + QTest::newRow("0061") << QStringLiteral("\u0061") << QByteArray("a"); // LATIN SMALL LETTER A + QTest::newRow("0062") << QStringLiteral("\u0062") << QByteArray("b"); // LATIN SMALL LETTER B + QTest::newRow("0063") << QStringLiteral("\u0063") << QByteArray("c"); // LATIN SMALL LETTER C + QTest::newRow("0064") << QStringLiteral("\u0064") << QByteArray("d"); // LATIN SMALL LETTER D + QTest::newRow("0065") << QStringLiteral("\u0065") << QByteArray("e"); // LATIN SMALL LETTER E + QTest::newRow("0066") << QStringLiteral("\u0066") << QByteArray("f"); // LATIN SMALL LETTER F + QTest::newRow("0067") << QStringLiteral("\u0067") << QByteArray("g"); // LATIN SMALL LETTER G + QTest::newRow("0068") << QStringLiteral("\u0068") << QByteArray("h"); // LATIN SMALL LETTER H + QTest::newRow("0069") << QStringLiteral("\u0069") << QByteArray("i"); // LATIN SMALL LETTER I + QTest::newRow("006a") << QStringLiteral("\u006a") << QByteArray("j"); // LATIN SMALL LETTER J + QTest::newRow("006b") << QStringLiteral("\u006b") << QByteArray("k"); // LATIN SMALL LETTER K + QTest::newRow("006c") << QStringLiteral("\u006c") << QByteArray("l"); // LATIN SMALL LETTER L + QTest::newRow("006d") << QStringLiteral("\u006d") << QByteArray("m"); // LATIN SMALL LETTER M + QTest::newRow("006e") << QStringLiteral("\u006e") << QByteArray("n"); // LATIN SMALL LETTER N + QTest::newRow("006f") << QStringLiteral("\u006f") << QByteArray("o"); // LATIN SMALL LETTER O + QTest::newRow("0070") << QStringLiteral("\u0070") << QByteArray("p"); // LATIN SMALL LETTER P + QTest::newRow("0071") << QStringLiteral("\u0071") << QByteArray("q"); // LATIN SMALL LETTER Q + QTest::newRow("0072") << QStringLiteral("\u0072") << QByteArray("r"); // LATIN SMALL LETTER R + QTest::newRow("0073") << QStringLiteral("\u0073") << QByteArray("s"); // LATIN SMALL LETTER S + QTest::newRow("0074") << QStringLiteral("\u0074") << QByteArray("t"); // LATIN SMALL LETTER T + QTest::newRow("0075") << QStringLiteral("\u0075") << QByteArray("u"); // LATIN SMALL LETTER U + QTest::newRow("0076") << QStringLiteral("\u0076") << QByteArray("v"); // LATIN SMALL LETTER V + QTest::newRow("0077") << QStringLiteral("\u0077") << QByteArray("w"); // LATIN SMALL LETTER W + QTest::newRow("0078") << QStringLiteral("\u0078") << QByteArray("x"); // LATIN SMALL LETTER X + QTest::newRow("0079") << QStringLiteral("\u0079") << QByteArray("y"); // LATIN SMALL LETTER Y + QTest::newRow("007a") << QStringLiteral("\u007a") << QByteArray("z"); // LATIN SMALL LETTER Z + QTest::newRow("007b") << QStringLiteral("\u007b") << QByteArray("{"); // LEFT CURLY BRACKET + QTest::newRow("007c") << QStringLiteral("\u007c") << QByteArray("|"); // VERTICAL LINE + QTest::newRow("007d") << QStringLiteral("\u007d") << QByteArray("}"); // RIGHT CURLY BRACKET + QTest::newRow("007e") << QStringLiteral("\u007e") << QByteArray("~"); // TILDE + QTest::newRow("0088") << QStringLiteral("\u0088") << QByteArray("\x88"); // + QTest::newRow("0089") << QStringLiteral("\u0089") << QByteArray("\x89"); // + QTest::newRow("00a1") << QStringLiteral("\u00a1") << QByteArray("\xa1"); // INVERTED EXCLAMATION MARK + QTest::newRow("00a3") << QStringLiteral("\u00a3") << QByteArray("\xa3"); // POUND SIGN + QTest::newRow("00a5") << QStringLiteral("\u00a5") << QByteArray("\xa5"); // YEN SIGN + QTest::newRow("00a7") << QStringLiteral("\u00a7") << QByteArray("\xa7"); // SECTION SIGN + QTest::newRow("00a9") << QStringLiteral("\u00a9") << QByteArray("\xad"); // COPYRIGHT SIGN + QTest::newRow("00ab") << QStringLiteral("\u00ab") << QByteArray("\xab"); // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + QTest::newRow("00ae") << QStringLiteral("\u00ae") << QByteArray("\xaf"); // REGISTERED SIGN + QTest::newRow("00b7") << QStringLiteral("\u00b7") << QByteArray("\xb7"); // MIDDLE DOT + QTest::newRow("00bb") << QStringLiteral("\u00bb") << QByteArray("\xbb"); // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + QTest::newRow("00bf") << QStringLiteral("\u00bf") << QByteArray("\xbf"); // INVERTED QUESTION MARK + QTest::newRow("00c0") << QStringLiteral("\u00c0") << QByteArray("\xc1" "A"); // LATIN CAPITAL LETTER A WITH GRAVE + QTest::newRow("00c1") << QStringLiteral("\u00c1") << QByteArray("\xc2" "A"); // LATIN CAPITAL LETTER A WITH ACUTE + QTest::newRow("00c2") << QStringLiteral("\u00c2") << QByteArray("\xc3" "A"); // LATIN CAPITAL LETTER A WITH CIRCUMFLEX + QTest::newRow("00c3") << QStringLiteral("\u00c3") << QByteArray("\xc4" "A"); // LATIN CAPITAL LETTER A WITH TILDE + QTest::newRow("00c4") << QStringLiteral("\u00c4") << QByteArray("\xc8" "A"); // LATIN CAPITAL LETTER A WITH DIAERESIS + QTest::newRow("00c5") << QStringLiteral("\u00c5") << QByteArray("\xca" "A"); // LATIN CAPITAL LETTER A WITH RING ABOVE + QTest::newRow("00c6") << QStringLiteral("\u00c6") << QByteArray("\xe1"); // LATIN CAPITAL LETTER AE + QTest::newRow("00c7") << QStringLiteral("\u00c7") << QByteArray("\xd0" "C"); // LATIN CAPITAL LETTER C WITH CEDILLA + QTest::newRow("00c8") << QStringLiteral("\u00c8") << QByteArray("\xc1" "E"); // LATIN CAPITAL LETTER E WITH GRAVE + QTest::newRow("00c9") << QStringLiteral("\u00c9") << QByteArray("\xc2" "E"); // LATIN CAPITAL LETTER E WITH ACUTE + QTest::newRow("00ca") << QStringLiteral("\u00ca") << QByteArray("\xc3" "E"); // LATIN CAPITAL LETTER E WITH CIRCUMFLEX + QTest::newRow("00cb") << QStringLiteral("\u00cb") << QByteArray("\xc8" "E"); // LATIN CAPITAL LETTER E WITH DIAERESIS + QTest::newRow("00cc") << QStringLiteral("\u00cc") << QByteArray("\xc1" "I"); // LATIN CAPITAL LETTER I WITH GRAVE + QTest::newRow("00cd") << QStringLiteral("\u00cd") << QByteArray("\xc2" "I"); // LATIN CAPITAL LETTER I WITH ACUTE + QTest::newRow("00ce") << QStringLiteral("\u00ce") << QByteArray("\xc3" "I"); // LATIN CAPITAL LETTER I WITH CIRCUMFLEX + QTest::newRow("00cf") << QStringLiteral("\u00cf") << QByteArray("\xc8" "I"); // LATIN CAPITAL LETTER I WITH DIAERESIS + QTest::newRow("00d1") << QStringLiteral("\u00d1") << QByteArray("\xc4" "N"); // LATIN CAPITAL LETTER N WITH TILDE + QTest::newRow("00d2") << QStringLiteral("\u00d2") << QByteArray("\xc1" "O"); // LATIN CAPITAL LETTER O WITH GRAVE + QTest::newRow("00d3") << QStringLiteral("\u00d3") << QByteArray("\xc2" "O"); // LATIN CAPITAL LETTER O WITH ACUTE + QTest::newRow("00d4") << QStringLiteral("\u00d4") << QByteArray("\xc3" "O"); // LATIN CAPITAL LETTER O WITH CIRCUMFLEX + QTest::newRow("00d5") << QStringLiteral("\u00d5") << QByteArray("\xc4" "O"); // LATIN CAPITAL LETTER O WITH TILDE + QTest::newRow("00d6") << QStringLiteral("\u00d6") << QByteArray("\xc8" "O"); // LATIN CAPITAL LETTER O WITH DIAERESIS + QTest::newRow("00d8") << QStringLiteral("\u00d8") << QByteArray("\xe9"); // LATIN CAPITAL LETTER O WITH STROKE + QTest::newRow("00d9") << QStringLiteral("\u00d9") << QByteArray("\xc1" "U"); // LATIN CAPITAL LETTER U WITH GRAVE + QTest::newRow("00da") << QStringLiteral("\u00da") << QByteArray("\xc2" "U"); // LATIN CAPITAL LETTER U WITH ACUTE + QTest::newRow("00db") << QStringLiteral("\u00db") << QByteArray("\xc3" "U"); // LATIN CAPITAL LETTER U WITH CIRCUMFLEX + QTest::newRow("00dc") << QStringLiteral("\u00dc") << QByteArray("\xc8" "U"); // LATIN CAPITAL LETTER U WITH DIAERESIS + QTest::newRow("00dd") << QStringLiteral("\u00dd") << QByteArray("\xc2" "Y"); // LATIN CAPITAL LETTER Y WITH ACUTE + QTest::newRow("00de") << QStringLiteral("\u00de") << QByteArray("\xec"); // LATIN CAPITAL LETTER THORN + QTest::newRow("00df") << QStringLiteral("\u00df") << QByteArray("\xfb"); // LATIN SMALL LETTER SHARP S + QTest::newRow("00e0") << QStringLiteral("\u00e0") << QByteArray("\xc1" "a"); // LATIN SMALL LETTER A WITH GRAVE + QTest::newRow("00e1") << QStringLiteral("\u00e1") << QByteArray("\xc2" "a"); // LATIN SMALL LETTER A WITH ACUTE + QTest::newRow("00e2") << QStringLiteral("\u00e2") << QByteArray("\xc3" "a"); // LATIN SMALL LETTER A WITH CIRCUMFLEX + QTest::newRow("00e3") << QStringLiteral("\u00e3") << QByteArray("\xc4" "a"); // LATIN SMALL LETTER A WITH TILDE + QTest::newRow("00e4") << QStringLiteral("\u00e4") << QByteArray("\xc8" "a"); // LATIN SMALL LETTER A WITH DIAERESIS + QTest::newRow("00e5") << QStringLiteral("\u00e5") << QByteArray("\xca" "a"); // LATIN SMALL LETTER A WITH RING ABOVE + QTest::newRow("00e6") << QStringLiteral("\u00e6") << QByteArray("\xf1"); // LATIN SMALL LETTER AE + QTest::newRow("00e7") << QStringLiteral("\u00e7") << QByteArray("\xd0" "c"); // LATIN SMALL LETTER C WITH CEDILLA + QTest::newRow("00e8") << QStringLiteral("\u00e8") << QByteArray("\xc1" "e"); // LATIN SMALL LETTER E WITH GRAVE + QTest::newRow("00e9") << QStringLiteral("\u00e9") << QByteArray("\xc2" "e"); // LATIN SMALL LETTER E WITH ACUTE + QTest::newRow("00ea") << QStringLiteral("\u00ea") << QByteArray("\xc3" "e"); // LATIN SMALL LETTER E WITH CIRCUMFLEX + QTest::newRow("00eb") << QStringLiteral("\u00eb") << QByteArray("\xc8" "e"); // LATIN SMALL LETTER E WITH DIAERESIS + QTest::newRow("00ec") << QStringLiteral("\u00ec") << QByteArray("\xc1" "i"); // LATIN SMALL LETTER I WITH GRAVE + QTest::newRow("00ed") << QStringLiteral("\u00ed") << QByteArray("\xc2" "i"); // LATIN SMALL LETTER I WITH ACUTE + QTest::newRow("00ee") << QStringLiteral("\u00ee") << QByteArray("\xc3" "i"); // LATIN SMALL LETTER I WITH CIRCUMFLEX + QTest::newRow("00ef") << QStringLiteral("\u00ef") << QByteArray("\xc8" "i"); // LATIN SMALL LETTER I WITH DIAERESIS + QTest::newRow("00f0") << QStringLiteral("\u00f0") << QByteArray("\xf3"); // LATIN SMALL LETTER ETH + QTest::newRow("00f1") << QStringLiteral("\u00f1") << QByteArray("\xc4" "n"); // LATIN SMALL LETTER N WITH TILDE + QTest::newRow("00f2") << QStringLiteral("\u00f2") << QByteArray("\xc1" "o"); // LATIN SMALL LETTER O WITH GRAVE + QTest::newRow("00f3") << QStringLiteral("\u00f3") << QByteArray("\xc2" "o"); // LATIN SMALL LETTER O WITH ACUTE + QTest::newRow("00f4") << QStringLiteral("\u00f4") << QByteArray("\xc3" "o"); // LATIN SMALL LETTER O WITH CIRCUMFLEX + QTest::newRow("00f5") << QStringLiteral("\u00f5") << QByteArray("\xc4" "o"); // LATIN SMALL LETTER O WITH TILDE + QTest::newRow("00f6") << QStringLiteral("\u00f6") << QByteArray("\xc8" "o"); // LATIN SMALL LETTER O WITH DIAERESIS + QTest::newRow("00f8") << QStringLiteral("\u00f8") << QByteArray("\xf9"); // LATIN SMALL LETTER O WITH STROKE + QTest::newRow("00f9") << QStringLiteral("\u00f9") << QByteArray("\xc1" "u"); // LATIN SMALL LETTER U WITH GRAVE + QTest::newRow("00fa") << QStringLiteral("\u00fa") << QByteArray("\xc2" "u"); // LATIN SMALL LETTER U WITH ACUTE + QTest::newRow("00fb") << QStringLiteral("\u00fb") << QByteArray("\xc3" "u"); // LATIN SMALL LETTER U WITH CIRCUMFLEX + QTest::newRow("00fc") << QStringLiteral("\u00fc") << QByteArray("\xc8" "u"); // LATIN SMALL LETTER U WITH DIAERESIS + QTest::newRow("00fd") << QStringLiteral("\u00fd") << QByteArray("\xc2" "y"); // LATIN SMALL LETTER Y WITH ACUTE + QTest::newRow("00fe") << QStringLiteral("\u00fe") << QByteArray("\xfc"); // LATIN SMALL LETTER THORN + QTest::newRow("00ff") << QStringLiteral("\u00ff") << QByteArray("\xc8" "y"); // LATIN SMALL LETTER Y WITH DIAERESIS + QTest::newRow("0100") << QStringLiteral("\u0100") << QByteArray("\xc5" "A"); // LATIN CAPITAL LETTER A WITH MACRON + QTest::newRow("0101") << QStringLiteral("\u0101") << QByteArray("\xc5" "a"); // LATIN SMALL LETTER A WITH MACRON + QTest::newRow("0102") << QStringLiteral("\u0102") << QByteArray("\xc6" "A"); // LATIN CAPITAL LETTER A WITH BREVE + QTest::newRow("0103") << QStringLiteral("\u0103") << QByteArray("\xc6" "a"); // LATIN SMALL LETTER A WITH BREVE + QTest::newRow("0104") << QStringLiteral("\u0104") << QByteArray("\xd3" "A"); // LATIN CAPITAL LETTER A WITH OGONEK + QTest::newRow("0105") << QStringLiteral("\u0105") << QByteArray("\xd3" "a"); // LATIN SMALL LETTER A WITH OGONEK + QTest::newRow("0106") << QStringLiteral("\u0106") << QByteArray("\xc2" "C"); // LATIN CAPITAL LETTER C WITH ACUTE + QTest::newRow("0107") << QStringLiteral("\u0107") << QByteArray("\xc2" "c"); // LATIN SMALL LETTER C WITH ACUTE + QTest::newRow("0108") << QStringLiteral("\u0108") << QByteArray("\xc3" "C"); // LATIN CAPITAL LETTER C WITH CIRCUMFLEX + QTest::newRow("0109") << QStringLiteral("\u0109") << QByteArray("\xc3" "c"); // LATIN SMALL LETTER C WITH CIRCUMFLEX + QTest::newRow("010a") << QStringLiteral("\u010a") << QByteArray("\xc7" "C"); // LATIN CAPITAL LETTER C WITH DOT ABOVE + QTest::newRow("010b") << QStringLiteral("\u010b") << QByteArray("\xc7" "c"); // LATIN SMALL LETTER C WITH DOT ABOVE + QTest::newRow("010c") << QStringLiteral("\u010c") << QByteArray("\xcf" "C"); // LATIN CAPITAL LETTER C WITH CARON + QTest::newRow("010d") << QStringLiteral("\u010d") << QByteArray("\xcf" "c"); // LATIN SMALL LETTER C WITH CARON + QTest::newRow("010e") << QStringLiteral("\u010e") << QByteArray("\xcf" "D"); // LATIN CAPITAL LETTER D WITH CARON + QTest::newRow("010f") << QStringLiteral("\u010f") << QByteArray("\xcf" "d"); // LATIN SMALL LETTER D WITH CARON + QTest::newRow("0110") << QStringLiteral("\u0110") << QByteArray("\xe2"); // LATIN CAPITAL LETTER D WITH STROKE + QTest::newRow("0111") << QStringLiteral("\u0111") << QByteArray("\xf2"); // LATIN SMALL LETTER D WITH STROKE + QTest::newRow("0112") << QStringLiteral("\u0112") << QByteArray("\xc5" "E"); // LATIN CAPITAL LETTER E WITH MACRON + QTest::newRow("0113") << QStringLiteral("\u0113") << QByteArray("\xc5" "e"); // LATIN SMALL LETTER E WITH MACRON + QTest::newRow("0114") << QStringLiteral("\u0114") << QByteArray("\xc6" "E"); // LATIN CAPITAL LETTER E WITH BREVE + QTest::newRow("0115") << QStringLiteral("\u0115") << QByteArray("\xc6" "e"); // LATIN SMALL LETTER E WITH BREVE + QTest::newRow("0116") << QStringLiteral("\u0116") << QByteArray("\xc7" "E"); // LATIN CAPITAL LETTER E WITH DOT ABOVE + QTest::newRow("0117") << QStringLiteral("\u0117") << QByteArray("\xc7" "e"); // LATIN SMALL LETTER E WITH DOT ABOVE + QTest::newRow("0118") << QStringLiteral("\u0118") << QByteArray("\xd3" "E"); // LATIN CAPITAL LETTER E WITH OGONEK + QTest::newRow("0119") << QStringLiteral("\u0119") << QByteArray("\xd3" "e"); // LATIN SMALL LETTER E WITH OGONEK + QTest::newRow("011a") << QStringLiteral("\u011a") << QByteArray("\xcf" "E"); // LATIN CAPITAL LETTER E WITH CARON + QTest::newRow("011b") << QStringLiteral("\u011b") << QByteArray("\xcf" "e"); // LATIN SMALL LETTER E WITH CARON + QTest::newRow("011c") << QStringLiteral("\u011c") << QByteArray("\xc3" "G"); // LATIN CAPITAL LETTER G WITH CIRCUMFLEX + QTest::newRow("011d") << QStringLiteral("\u011d") << QByteArray("\xc3" "g"); // LATIN SMALL LETTER G WITH CIRCUMFLEX + QTest::newRow("011e") << QStringLiteral("\u011e") << QByteArray("\xc6" "G"); // LATIN CAPITAL LETTER G WITH BREVE + QTest::newRow("011f") << QStringLiteral("\u011f") << QByteArray("\xc6" "g"); // LATIN SMALL LETTER G WITH BREVE + QTest::newRow("0120") << QStringLiteral("\u0120") << QByteArray("\xc7" "G"); // LATIN CAPITAL LETTER G WITH DOT ABOVE + QTest::newRow("0121") << QStringLiteral("\u0121") << QByteArray("\xc7" "g"); // LATIN SMALL LETTER G WITH DOT ABOVE + QTest::newRow("0122") << QStringLiteral("\u0122") << QByteArray("\xd0" "G"); // LATIN CAPITAL LETTER G WITH CEDILLA + QTest::newRow("0123") << QStringLiteral("\u0123") << QByteArray("\xd0" "g"); // LATIN SMALL LETTER G WITH CEDILLA + QTest::newRow("0124") << QStringLiteral("\u0124") << QByteArray("\xc3" "H"); // LATIN CAPITAL LETTER H WITH CIRCUMFLEX + QTest::newRow("0125") << QStringLiteral("\u0125") << QByteArray("\xc3" "h"); // LATIN SMALL LETTER H WITH CIRCUMFLEX + QTest::newRow("0128") << QStringLiteral("\u0128") << QByteArray("\xc4" "I"); // LATIN CAPITAL LETTER I WITH TILDE + QTest::newRow("0129") << QStringLiteral("\u0129") << QByteArray("\xc4" "i"); // LATIN SMALL LETTER I WITH TILDE + QTest::newRow("012a") << QStringLiteral("\u012a") << QByteArray("\xc5" "I"); // LATIN CAPITAL LETTER I WITH MACRON + QTest::newRow("012b") << QStringLiteral("\u012b") << QByteArray("\xc5" "i"); // LATIN SMALL LETTER I WITH MACRON + QTest::newRow("012c") << QStringLiteral("\u012c") << QByteArray("\xc6" "I"); // LATIN CAPITAL LETTER I WITH BREVE + QTest::newRow("012d") << QStringLiteral("\u012d") << QByteArray("\xc6" "i"); // LATIN SMALL LETTER I WITH BREVE + QTest::newRow("012e") << QStringLiteral("\u012e") << QByteArray("\xd3" "I"); // LATIN CAPITAL LETTER I WITH OGONEK + QTest::newRow("012f") << QStringLiteral("\u012f") << QByteArray("\xd3" "i"); // LATIN SMALL LETTER I WITH OGONEK + QTest::newRow("0130") << QStringLiteral("\u0130") << QByteArray("\xc7" "I"); // LATIN CAPITAL LETTER I WITH DOT ABOVE + QTest::newRow("0131") << QStringLiteral("\u0131") << QByteArray("\xf5"); // LATIN SMALL LETTER DOTLESS I + QTest::newRow("0132") << QStringLiteral("\u0132") << QByteArray("\xe6"); // LATIN CAPITAL LIGATURE IJ + QTest::newRow("0133") << QStringLiteral("\u0133") << QByteArray("\xf6"); // LATIN SMALL LIGATURE IJ + QTest::newRow("0134") << QStringLiteral("\u0134") << QByteArray("\xc3" "J"); // LATIN CAPITAL LETTER J WITH CIRCUMFLEX + QTest::newRow("0135") << QStringLiteral("\u0135") << QByteArray("\xc3" "j"); // LATIN SMALL LETTER J WITH CIRCUMFLEX + QTest::newRow("0136") << QStringLiteral("\u0136") << QByteArray("\xd0" "K"); // LATIN CAPITAL LETTER K WITH CEDILLA + QTest::newRow("0137") << QStringLiteral("\u0137") << QByteArray("\xd0" "k"); // LATIN SMALL LETTER K WITH CEDILLA + QTest::newRow("0139") << QStringLiteral("\u0139") << QByteArray("\xc2" "L"); // LATIN CAPITAL LETTER L WITH ACUTE + QTest::newRow("013a") << QStringLiteral("\u013a") << QByteArray("\xc2" "l"); // LATIN SMALL LETTER L WITH ACUTE + QTest::newRow("013b") << QStringLiteral("\u013b") << QByteArray("\xd0" "L"); // LATIN CAPITAL LETTER L WITH CEDILLA + QTest::newRow("013c") << QStringLiteral("\u013c") << QByteArray("\xd0" "l"); // LATIN SMALL LETTER L WITH CEDILLA + QTest::newRow("013d") << QStringLiteral("\u013d") << QByteArray("\xcf" "L"); // LATIN CAPITAL LETTER L WITH CARON + QTest::newRow("013e") << QStringLiteral("\u013e") << QByteArray("\xcf" "l"); // LATIN SMALL LETTER L WITH CARON + QTest::newRow("0141") << QStringLiteral("\u0141") << QByteArray("\xe8"); // LATIN CAPITAL LETTER L WITH STROKE + QTest::newRow("0142") << QStringLiteral("\u0142") << QByteArray("\xf8"); // LATIN SMALL LETTER L WITH STROKE + QTest::newRow("0143") << QStringLiteral("\u0143") << QByteArray("\xc2" "N"); // LATIN CAPITAL LETTER N WITH ACUTE + QTest::newRow("0144") << QStringLiteral("\u0144") << QByteArray("\xc2" "n"); // LATIN SMALL LETTER N WITH ACUTE + QTest::newRow("0145") << QStringLiteral("\u0145") << QByteArray("\xd0" "N"); // LATIN CAPITAL LETTER N WITH CEDILLA + QTest::newRow("0146") << QStringLiteral("\u0146") << QByteArray("\xd0" "n"); // LATIN SMALL LETTER N WITH CEDILLA + QTest::newRow("0147") << QStringLiteral("\u0147") << QByteArray("\xcf" "N"); // LATIN CAPITAL LETTER N WITH CARON + QTest::newRow("0148") << QStringLiteral("\u0148") << QByteArray("\xcf" "n"); // LATIN SMALL LETTER N WITH CARON + QTest::newRow("014c") << QStringLiteral("\u014c") << QByteArray("\xc5" "O"); // LATIN CAPITAL LETTER O WITH MACRON + QTest::newRow("014d") << QStringLiteral("\u014d") << QByteArray("\xc5" "o"); // LATIN SMALL LETTER O WITH MACRON + QTest::newRow("014e") << QStringLiteral("\u014e") << QByteArray("\xc6" "O"); // LATIN CAPITAL LETTER O WITH BREVE + QTest::newRow("014f") << QStringLiteral("\u014f") << QByteArray("\xc6" "o"); // LATIN SMALL LETTER O WITH BREVE + QTest::newRow("0150") << QStringLiteral("\u0150") << QByteArray("\xcd" "O"); // LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + QTest::newRow("0151") << QStringLiteral("\u0151") << QByteArray("\xcd" "o"); // LATIN SMALL LETTER O WITH DOUBLE ACUTE + QTest::newRow("0152") << QStringLiteral("\u0152") << QByteArray("\xea"); // LATIN CAPITAL LIGATURE OE + QTest::newRow("0153") << QStringLiteral("\u0153") << QByteArray("\xfa"); // LATIN SMALL LIGATURE OE + QTest::newRow("0154") << QStringLiteral("\u0154") << QByteArray("\xc2" "R"); // LATIN CAPITAL LETTER R WITH ACUTE + QTest::newRow("0155") << QStringLiteral("\u0155") << QByteArray("\xc2" "r"); // LATIN SMALL LETTER R WITH ACUTE + QTest::newRow("0156") << QStringLiteral("\u0156") << QByteArray("\xd0" "R"); // LATIN CAPITAL LETTER R WITH CEDILLA + QTest::newRow("0157") << QStringLiteral("\u0157") << QByteArray("\xd0" "r"); // LATIN SMALL LETTER R WITH CEDILLA + QTest::newRow("0158") << QStringLiteral("\u0158") << QByteArray("\xcf" "R"); // LATIN CAPITAL LETTER R WITH CARON + QTest::newRow("0159") << QStringLiteral("\u0159") << QByteArray("\xcf" "r"); // LATIN SMALL LETTER R WITH CARON + QTest::newRow("015a") << QStringLiteral("\u015a") << QByteArray("\xc2" "S"); // LATIN CAPITAL LETTER S WITH ACUTE + QTest::newRow("015b") << QStringLiteral("\u015b") << QByteArray("\xc2" "s"); // LATIN SMALL LETTER S WITH ACUTE + QTest::newRow("015c") << QStringLiteral("\u015c") << QByteArray("\xc3" "S"); // LATIN CAPITAL LETTER S WITH CIRCUMFLEX + QTest::newRow("015d") << QStringLiteral("\u015d") << QByteArray("\xc3" "s"); // LATIN SMALL LETTER S WITH CIRCUMFLEX + QTest::newRow("015e") << QStringLiteral("\u015e") << QByteArray("\xd0" "S"); // LATIN CAPITAL LETTER S WITH CEDILLA + QTest::newRow("015f") << QStringLiteral("\u015f") << QByteArray("\xd0" "s"); // LATIN SMALL LETTER S WITH CEDILLA + QTest::newRow("0160") << QStringLiteral("\u0160") << QByteArray("\xcf" "S"); // LATIN CAPITAL LETTER S WITH CARON + QTest::newRow("0161") << QStringLiteral("\u0161") << QByteArray("\xcf" "s"); // LATIN SMALL LETTER S WITH CARON + QTest::newRow("0162") << QStringLiteral("\u0162") << QByteArray("\xd0" "T"); // LATIN CAPITAL LETTER T WITH CEDILLA + QTest::newRow("0163") << QStringLiteral("\u0163") << QByteArray("\xd0" "t"); // LATIN SMALL LETTER T WITH CEDILLA + QTest::newRow("0164") << QStringLiteral("\u0164") << QByteArray("\xcf" "T"); // LATIN CAPITAL LETTER T WITH CARON + QTest::newRow("0165") << QStringLiteral("\u0165") << QByteArray("\xcf" "t"); // LATIN SMALL LETTER T WITH CARON + QTest::newRow("0168") << QStringLiteral("\u0168") << QByteArray("\xc4" "U"); // LATIN CAPITAL LETTER U WITH TILDE + QTest::newRow("0169") << QStringLiteral("\u0169") << QByteArray("\xc4" "u"); // LATIN SMALL LETTER U WITH TILDE + QTest::newRow("016a") << QStringLiteral("\u016a") << QByteArray("\xc5" "U"); // LATIN CAPITAL LETTER U WITH MACRON + QTest::newRow("016b") << QStringLiteral("\u016b") << QByteArray("\xc5" "u"); // LATIN SMALL LETTER U WITH MACRON + QTest::newRow("016c") << QStringLiteral("\u016c") << QByteArray("\xc6" "U"); // LATIN CAPITAL LETTER U WITH BREVE + QTest::newRow("016d") << QStringLiteral("\u016d") << QByteArray("\xc6" "u"); // LATIN SMALL LETTER U WITH BREVE + QTest::newRow("016e") << QStringLiteral("\u016e") << QByteArray("\xca" "U"); // LATIN CAPITAL LETTER U WITH RING ABOVE + QTest::newRow("016f") << QStringLiteral("\u016f") << QByteArray("\xca" "u"); // LATIN SMALL LETTER U WITH RING ABOVE + QTest::newRow("0170") << QStringLiteral("\u0170") << QByteArray("\xcd" "U"); // LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + QTest::newRow("0171") << QStringLiteral("\u0171") << QByteArray("\xcd" "u"); // LATIN SMALL LETTER U WITH DOUBLE ACUTE + QTest::newRow("0172") << QStringLiteral("\u0172") << QByteArray("\xd3" "U"); // LATIN CAPITAL LETTER U WITH OGONEK + QTest::newRow("0173") << QStringLiteral("\u0173") << QByteArray("\xd3" "u"); // LATIN SMALL LETTER U WITH OGONEK + QTest::newRow("0174") << QStringLiteral("\u0174") << QByteArray("\xc3" "W"); // LATIN CAPITAL LETTER W WITH CIRCUMFLEX + QTest::newRow("0175") << QStringLiteral("\u0175") << QByteArray("\xc3" "w"); // LATIN SMALL LETTER W WITH CIRCUMFLEX + QTest::newRow("0176") << QStringLiteral("\u0176") << QByteArray("\xc3" "Y"); // LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + QTest::newRow("0177") << QStringLiteral("\u0177") << QByteArray("\xc3" "y"); // LATIN SMALL LETTER Y WITH CIRCUMFLEX + QTest::newRow("0178") << QStringLiteral("\u0178") << QByteArray("\xc8" "Y"); // LATIN CAPITAL LETTER Y WITH DIAERESIS + QTest::newRow("0179") << QStringLiteral("\u0179") << QByteArray("\xc2" "Z"); // LATIN CAPITAL LETTER Z WITH ACUTE + QTest::newRow("017a") << QStringLiteral("\u017a") << QByteArray("\xc2" "z"); // LATIN SMALL LETTER Z WITH ACUTE + QTest::newRow("017b") << QStringLiteral("\u017b") << QByteArray("\xc7" "Z"); // LATIN CAPITAL LETTER Z WITH DOT ABOVE + QTest::newRow("017c") << QStringLiteral("\u017c") << QByteArray("\xc7" "z"); // LATIN SMALL LETTER Z WITH DOT ABOVE + QTest::newRow("017d") << QStringLiteral("\u017d") << QByteArray("\xcf" "Z"); // LATIN CAPITAL LETTER Z WITH CARON + QTest::newRow("017e") << QStringLiteral("\u017e") << QByteArray("\xcf" "z"); // LATIN SMALL LETTER Z WITH CARON + QTest::newRow("01a0") << QStringLiteral("\u01a0") << QByteArray("\xce" "O"); // LATIN CAPITAL LETTER O WITH HORN + QTest::newRow("01a1") << QStringLiteral("\u01a1") << QByteArray("\xce" "o"); // LATIN SMALL LETTER O WITH HORN + QTest::newRow("01af") << QStringLiteral("\u01af") << QByteArray("\xce" "U"); // LATIN CAPITAL LETTER U WITH HORN + QTest::newRow("01b0") << QStringLiteral("\u01b0") << QByteArray("\xce" "u"); // LATIN SMALL LETTER U WITH HORN + QTest::newRow("01cd") << QStringLiteral("\u01cd") << QByteArray("\xcf" "A"); // LATIN CAPITAL LETTER A WITH CARON + QTest::newRow("01ce") << QStringLiteral("\u01ce") << QByteArray("\xcf" "a"); // LATIN SMALL LETTER A WITH CARON + QTest::newRow("01cf") << QStringLiteral("\u01cf") << QByteArray("\xcf" "I"); // LATIN CAPITAL LETTER I WITH CARON + QTest::newRow("01d0") << QStringLiteral("\u01d0") << QByteArray("\xcf" "i"); // LATIN SMALL LETTER I WITH CARON + QTest::newRow("01d1") << QStringLiteral("\u01d1") << QByteArray("\xcf" "O"); // LATIN CAPITAL LETTER O WITH CARON + QTest::newRow("01d2") << QStringLiteral("\u01d2") << QByteArray("\xcf" "o"); // LATIN SMALL LETTER O WITH CARON + QTest::newRow("01d3") << QStringLiteral("\u01d3") << QByteArray("\xcf" "U"); // LATIN CAPITAL LETTER U WITH CARON + QTest::newRow("01d4") << QStringLiteral("\u01d4") << QByteArray("\xcf" "u"); // LATIN SMALL LETTER U WITH CARON + QTest::newRow("01d5") << QStringLiteral("\u01d5") << QByteArray("\xc5\xc8" "U"); // LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + QTest::newRow("01d6") << QStringLiteral("\u01d6") << QByteArray("\xc5\xc8" "u"); // LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + QTest::newRow("01d7") << QStringLiteral("\u01d7") << QByteArray("\xc2\xc8" "U"); // LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + QTest::newRow("01d8") << QStringLiteral("\u01d8") << QByteArray("\xc2\xc8" "u"); // LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + QTest::newRow("01d9") << QStringLiteral("\u01d9") << QByteArray("\xcf\xc8" "U"); // LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + QTest::newRow("01da") << QStringLiteral("\u01da") << QByteArray("\xcf\xc8" "u"); // LATIN SMALL LETTER U WITH DIAERESIS AND CARON + QTest::newRow("01db") << QStringLiteral("\u01db") << QByteArray("\xc1\xc8" "U"); // LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + QTest::newRow("01dc") << QStringLiteral("\u01dc") << QByteArray("\xc1\xc8" "u"); // LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + QTest::newRow("01de") << QStringLiteral("\u01de") << QByteArray("\xc5\xc8" "A"); // LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + QTest::newRow("01df") << QStringLiteral("\u01df") << QByteArray("\xc5\xc8" "a"); // LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + QTest::newRow("01e0") << QStringLiteral("\u01e0") << QByteArray("\xc5\xc7" "A"); // LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + QTest::newRow("01e1") << QStringLiteral("\u01e1") << QByteArray("\xc5\xc7" "a"); // LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + QTest::newRow("01e2") << QStringLiteral("\u01e2") << QByteArray("\xc5\xe1"); // LATIN CAPITAL LETTER AE WITH MACRON + QTest::newRow("01e3") << QStringLiteral("\u01e3") << QByteArray("\xc5\xf1"); // LATIN SMALL LETTER AE WITH MACRON + QTest::newRow("01e6") << QStringLiteral("\u01e6") << QByteArray("\xcf" "G"); // LATIN CAPITAL LETTER G WITH CARON + QTest::newRow("01e7") << QStringLiteral("\u01e7") << QByteArray("\xcf" "g"); // LATIN SMALL LETTER G WITH CARON + QTest::newRow("01e8") << QStringLiteral("\u01e8") << QByteArray("\xcf" "K"); // LATIN CAPITAL LETTER K WITH CARON + QTest::newRow("01e9") << QStringLiteral("\u01e9") << QByteArray("\xcf" "k"); // LATIN SMALL LETTER K WITH CARON + QTest::newRow("01ea") << QStringLiteral("\u01ea") << QByteArray("\xd3" "O"); // LATIN CAPITAL LETTER O WITH OGONEK + QTest::newRow("01eb") << QStringLiteral("\u01eb") << QByteArray("\xd3" "o"); // LATIN SMALL LETTER O WITH OGONEK + QTest::newRow("01ec") << QStringLiteral("\u01ec") << QByteArray("\xc5\xd3" "O"); // LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + QTest::newRow("01ed") << QStringLiteral("\u01ed") << QByteArray("\xc5\xd3" "o"); // LATIN SMALL LETTER O WITH OGONEK AND MACRON + QTest::newRow("01f0") << QStringLiteral("\u01f0") << QByteArray("\xcf" "j"); // LATIN SMALL LETTER J WITH CARON + QTest::newRow("01f4") << QStringLiteral("\u01f4") << QByteArray("\xc2" "G"); // LATIN CAPITAL LETTER G WITH ACUTE + QTest::newRow("01f5") << QStringLiteral("\u01f5") << QByteArray("\xc2" "g"); // LATIN SMALL LETTER G WITH ACUTE + QTest::newRow("01f8") << QStringLiteral("\u01f8") << QByteArray("\xc1" "N"); // LATIN CAPITAL LETTER N WITH GRAVE + QTest::newRow("01f9") << QStringLiteral("\u01f9") << QByteArray("\xc1" "n"); // LATIN SMALL LETTER N WITH GRAVE + QTest::newRow("01fa") << QStringLiteral("\u01fa") << QByteArray("\xc2\xca" "A"); // LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + QTest::newRow("01fb") << QStringLiteral("\u01fb") << QByteArray("\xc2\xca" "a"); // LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + QTest::newRow("01fc") << QStringLiteral("\u01fc") << QByteArray("\xc2\xe1"); // LATIN CAPITAL LETTER AE WITH ACUTE + QTest::newRow("01fd") << QStringLiteral("\u01fd") << QByteArray("\xc2\xf1"); // LATIN SMALL LETTER AE WITH ACUTE + QTest::newRow("01fe") << QStringLiteral("\u01fe") << QByteArray("\xc2\xe9"); // LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + QTest::newRow("01ff") << QStringLiteral("\u01ff") << QByteArray("\xc2\xf9"); // LATIN SMALL LETTER O WITH STROKE AND ACUTE + QTest::newRow("0218") << QStringLiteral("\u0218") << QByteArray("\xd2" "S"); // LATIN CAPITAL LETTER S WITH COMMA BELOW + QTest::newRow("0219") << QStringLiteral("\u0219") << QByteArray("\xd2" "s"); // LATIN SMALL LETTER S WITH COMMA BELOW + QTest::newRow("021a") << QStringLiteral("\u021a") << QByteArray("\xd2" "T"); // LATIN CAPITAL LETTER T WITH COMMA BELOW + QTest::newRow("021b") << QStringLiteral("\u021b") << QByteArray("\xd2" "t"); // LATIN SMALL LETTER T WITH COMMA BELOW + QTest::newRow("021e") << QStringLiteral("\u021e") << QByteArray("\xcf" "H"); // LATIN CAPITAL LETTER H WITH CARON + QTest::newRow("021f") << QStringLiteral("\u021f") << QByteArray("\xcf" "h"); // LATIN SMALL LETTER H WITH CARON + QTest::newRow("0226") << QStringLiteral("\u0226") << QByteArray("\xc7" "A"); // LATIN CAPITAL LETTER A WITH DOT ABOVE + QTest::newRow("0227") << QStringLiteral("\u0227") << QByteArray("\xc7" "a"); // LATIN SMALL LETTER A WITH DOT ABOVE + QTest::newRow("0228") << QStringLiteral("\u0228") << QByteArray("\xd0" "E"); // LATIN CAPITAL LETTER E WITH CEDILLA + QTest::newRow("0229") << QStringLiteral("\u0229") << QByteArray("\xd0" "e"); // LATIN SMALL LETTER E WITH CEDILLA + QTest::newRow("022a") << QStringLiteral("\u022a") << QByteArray("\xc5\xc8" "O"); // LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + QTest::newRow("022b") << QStringLiteral("\u022b") << QByteArray("\xc5\xc8" "o"); // LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + QTest::newRow("022c") << QStringLiteral("\u022c") << QByteArray("\xc5\xc4" "O"); // LATIN CAPITAL LETTER O WITH TILDE AND MACRON + QTest::newRow("022d") << QStringLiteral("\u022d") << QByteArray("\xc5\xc4" "o"); // LATIN SMALL LETTER O WITH TILDE AND MACRON + QTest::newRow("022e") << QStringLiteral("\u022e") << QByteArray("\xc7" "O"); // LATIN CAPITAL LETTER O WITH DOT ABOVE + QTest::newRow("022f") << QStringLiteral("\u022f") << QByteArray("\xc7" "o"); // LATIN SMALL LETTER O WITH DOT ABOVE + QTest::newRow("0230") << QStringLiteral("\u0230") << QByteArray("\xc5\xc7" "O"); // LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + QTest::newRow("0231") << QStringLiteral("\u0231") << QByteArray("\xc5\xc7" "o"); // LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + QTest::newRow("0232") << QStringLiteral("\u0232") << QByteArray("\xc5" "Y"); // LATIN CAPITAL LETTER Y WITH MACRON + QTest::newRow("0233") << QStringLiteral("\u0233") << QByteArray("\xc5" "y"); // LATIN SMALL LETTER Y WITH MACRON + QTest::newRow("02b9") << QStringLiteral("\u02b9") << QByteArray("\xbd"); // MODIFIER LETTER PRIME + QTest::newRow("02ba") << QStringLiteral("\u02ba") << QByteArray("\xbe"); // MODIFIER LETTER DOUBLE PRIME +// QTest::newRow("02bb") << QStringLiteral("\u02bb") << QByteArray("\xb0"); // MODIFIER LETTER TURNED COMMA +// QTest::newRow("02bc") << QStringLiteral("\u02bc") << QByteArray("\xb1"); // MODIFIER LETTER APOSTROPHE +// QTest::newRow("0374") << QStringLiteral("\u0374") << QByteArray("\xbd"); // GREEK NUMERAL SIGN +// QTest::newRow("037e") << QStringLiteral("\u037e") << QByteArray(";"); // GREEK QUESTION MARK +// QTest::newRow("0387") << QStringLiteral("\u0387") << QByteArray("\xb7"); // GREEK ANO TELEIA + QTest::newRow("1e00") << QStringLiteral("\u1e00") << QByteArray("\xd4" "A"); // LATIN CAPITAL LETTER A WITH RING BELOW + QTest::newRow("1e01") << QStringLiteral("\u1e01") << QByteArray("\xd4" "a"); // LATIN SMALL LETTER A WITH RING BELOW + QTest::newRow("1e02") << QStringLiteral("\u1e02") << QByteArray("\xc7" "B"); // LATIN CAPITAL LETTER B WITH DOT ABOVE + QTest::newRow("1e03") << QStringLiteral("\u1e03") << QByteArray("\xc7" "b"); // LATIN SMALL LETTER B WITH DOT ABOVE + QTest::newRow("1e04") << QStringLiteral("\u1e04") << QByteArray("\xd6" "B"); // LATIN CAPITAL LETTER B WITH DOT BELOW + QTest::newRow("1e05") << QStringLiteral("\u1e05") << QByteArray("\xd6" "b"); // LATIN SMALL LETTER B WITH DOT BELOW + QTest::newRow("1e08") << QStringLiteral("\u1e08") << QByteArray("\xc2\xd0" "C"); // LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + QTest::newRow("1e09") << QStringLiteral("\u1e09") << QByteArray("\xc2\xd0" "c"); // LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + QTest::newRow("1e0a") << QStringLiteral("\u1e0a") << QByteArray("\xc7" "D"); // LATIN CAPITAL LETTER D WITH DOT ABOVE + QTest::newRow("1e0b") << QStringLiteral("\u1e0b") << QByteArray("\xc7" "d"); // LATIN SMALL LETTER D WITH DOT ABOVE + QTest::newRow("1e0c") << QStringLiteral("\u1e0c") << QByteArray("\xd6" "D"); // LATIN CAPITAL LETTER D WITH DOT BELOW + QTest::newRow("1e0d") << QStringLiteral("\u1e0d") << QByteArray("\xd6" "d"); // LATIN SMALL LETTER D WITH DOT BELOW + QTest::newRow("1e10") << QStringLiteral("\u1e10") << QByteArray("\xd0" "D"); // LATIN CAPITAL LETTER D WITH CEDILLA + QTest::newRow("1e11") << QStringLiteral("\u1e11") << QByteArray("\xd0" "d"); // LATIN SMALL LETTER D WITH CEDILLA + QTest::newRow("1e12") << QStringLiteral("\u1e12") << QByteArray("\xdb" "D"); // LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW + QTest::newRow("1e13") << QStringLiteral("\u1e13") << QByteArray("\xdb" "d"); // LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW + QTest::newRow("1e14") << QStringLiteral("\u1e14") << QByteArray("\xc1\xc5" "E"); // LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + QTest::newRow("1e15") << QStringLiteral("\u1e15") << QByteArray("\xc1\xc5" "e"); // LATIN SMALL LETTER E WITH MACRON AND GRAVE + QTest::newRow("1e16") << QStringLiteral("\u1e16") << QByteArray("\xc2\xc5" "E"); // LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + QTest::newRow("1e17") << QStringLiteral("\u1e17") << QByteArray("\xc2\xc5" "e"); // LATIN SMALL LETTER E WITH MACRON AND ACUTE + QTest::newRow("1e18") << QStringLiteral("\u1e18") << QByteArray("\xdb" "E"); // LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW + QTest::newRow("1e19") << QStringLiteral("\u1e19") << QByteArray("\xdb" "e"); // LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW + QTest::newRow("1e1c") << QStringLiteral("\u1e1c") << QByteArray("\xc6\xd0" "E"); // LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + QTest::newRow("1e1d") << QStringLiteral("\u1e1d") << QByteArray("\xc6\xd0" "e"); // LATIN SMALL LETTER E WITH CEDILLA AND BREVE + QTest::newRow("1e1e") << QStringLiteral("\u1e1e") << QByteArray("\xc7" "F"); // LATIN CAPITAL LETTER F WITH DOT ABOVE + QTest::newRow("1e1f") << QStringLiteral("\u1e1f") << QByteArray("\xc7" "f"); // LATIN SMALL LETTER F WITH DOT ABOVE + QTest::newRow("1e20") << QStringLiteral("\u1e20") << QByteArray("\xc5" "G"); // LATIN CAPITAL LETTER G WITH MACRON + QTest::newRow("1e21") << QStringLiteral("\u1e21") << QByteArray("\xc5" "g"); // LATIN SMALL LETTER G WITH MACRON + QTest::newRow("1e22") << QStringLiteral("\u1e22") << QByteArray("\xc7" "H"); // LATIN CAPITAL LETTER H WITH DOT ABOVE + QTest::newRow("1e23") << QStringLiteral("\u1e23") << QByteArray("\xc7" "h"); // LATIN SMALL LETTER H WITH DOT ABOVE + QTest::newRow("1e24") << QStringLiteral("\u1e24") << QByteArray("\xd6" "H"); // LATIN CAPITAL LETTER H WITH DOT BELOW + QTest::newRow("1e25") << QStringLiteral("\u1e25") << QByteArray("\xd6" "h"); // LATIN SMALL LETTER H WITH DOT BELOW + QTest::newRow("1e26") << QStringLiteral("\u1e26") << QByteArray("\xc8" "H"); // LATIN CAPITAL LETTER H WITH DIAERESIS + QTest::newRow("1e27") << QStringLiteral("\u1e27") << QByteArray("\xc8" "h"); // LATIN SMALL LETTER H WITH DIAERESIS + QTest::newRow("1e28") << QStringLiteral("\u1e28") << QByteArray("\xd0" "H"); // LATIN CAPITAL LETTER H WITH CEDILLA + QTest::newRow("1e29") << QStringLiteral("\u1e29") << QByteArray("\xd0" "h"); // LATIN SMALL LETTER H WITH CEDILLA + QTest::newRow("1e2a") << QStringLiteral("\u1e2a") << QByteArray("\xd5" "H"); // LATIN CAPITAL LETTER H WITH BREVE BELOW + QTest::newRow("1e2b") << QStringLiteral("\u1e2b") << QByteArray("\xd5" "h"); // LATIN SMALL LETTER H WITH BREVE BELOW + QTest::newRow("1e2e") << QStringLiteral("\u1e2e") << QByteArray("\xc2\xc8" "I"); // LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + QTest::newRow("1e2f") << QStringLiteral("\u1e2f") << QByteArray("\xc2\xc8" "i"); // LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + QTest::newRow("1e30") << QStringLiteral("\u1e30") << QByteArray("\xc2" "K"); // LATIN CAPITAL LETTER K WITH ACUTE + QTest::newRow("1e31") << QStringLiteral("\u1e31") << QByteArray("\xc2" "k"); // LATIN SMALL LETTER K WITH ACUTE + QTest::newRow("1e32") << QStringLiteral("\u1e32") << QByteArray("\xd6" "K"); // LATIN CAPITAL LETTER K WITH DOT BELOW + QTest::newRow("1e33") << QStringLiteral("\u1e33") << QByteArray("\xd6" "k"); // LATIN SMALL LETTER K WITH DOT BELOW + QTest::newRow("1e36") << QStringLiteral("\u1e36") << QByteArray("\xd6" "L"); // LATIN CAPITAL LETTER L WITH DOT BELOW + QTest::newRow("1e37") << QStringLiteral("\u1e37") << QByteArray("\xd6" "l"); // LATIN SMALL LETTER L WITH DOT BELOW + QTest::newRow("1e38") << QStringLiteral("\u1e38") << QByteArray("\xc5\xd6" "L"); // LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + QTest::newRow("1e39") << QStringLiteral("\u1e39") << QByteArray("\xc5\xd6" "l"); // LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + QTest::newRow("1e3c") << QStringLiteral("\u1e3c") << QByteArray("\xdb" "L"); // LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW + QTest::newRow("1e3d") << QStringLiteral("\u1e3d") << QByteArray("\xdb" "l"); // LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW + QTest::newRow("1e3e") << QStringLiteral("\u1e3e") << QByteArray("\xc2" "M"); // LATIN CAPITAL LETTER M WITH ACUTE + QTest::newRow("1e3f") << QStringLiteral("\u1e3f") << QByteArray("\xc2" "m"); // LATIN SMALL LETTER M WITH ACUTE + QTest::newRow("1e40") << QStringLiteral("\u1e40") << QByteArray("\xc7" "M"); // LATIN CAPITAL LETTER M WITH DOT ABOVE + QTest::newRow("1e41") << QStringLiteral("\u1e41") << QByteArray("\xc7" "m"); // LATIN SMALL LETTER M WITH DOT ABOVE + QTest::newRow("1e42") << QStringLiteral("\u1e42") << QByteArray("\xd6" "M"); // LATIN CAPITAL LETTER M WITH DOT BELOW + QTest::newRow("1e43") << QStringLiteral("\u1e43") << QByteArray("\xd6" "m"); // LATIN SMALL LETTER M WITH DOT BELOW + QTest::newRow("1e44") << QStringLiteral("\u1e44") << QByteArray("\xc7" "N"); // LATIN CAPITAL LETTER N WITH DOT ABOVE + QTest::newRow("1e45") << QStringLiteral("\u1e45") << QByteArray("\xc7" "n"); // LATIN SMALL LETTER N WITH DOT ABOVE + QTest::newRow("1e46") << QStringLiteral("\u1e46") << QByteArray("\xd6" "N"); // LATIN CAPITAL LETTER N WITH DOT BELOW + QTest::newRow("1e47") << QStringLiteral("\u1e47") << QByteArray("\xd6" "n"); // LATIN SMALL LETTER N WITH DOT BELOW + QTest::newRow("1e4a") << QStringLiteral("\u1e4a") << QByteArray("\xdb" "N"); // LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW + QTest::newRow("1e4b") << QStringLiteral("\u1e4b") << QByteArray("\xdb" "n"); // LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW + QTest::newRow("1e4c") << QStringLiteral("\u1e4c") << QByteArray("\xc2\xc4" "O"); // LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + QTest::newRow("1e4d") << QStringLiteral("\u1e4d") << QByteArray("\xc2\xc4" "o"); // LATIN SMALL LETTER O WITH TILDE AND ACUTE + QTest::newRow("1e4e") << QStringLiteral("\u1e4e") << QByteArray("\xc8\xc4" "O"); // LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + QTest::newRow("1e4f") << QStringLiteral("\u1e4f") << QByteArray("\xc8\xc4" "o"); // LATIN SMALL LETTER O WITH TILDE AND DIAERESIS + QTest::newRow("1e50") << QStringLiteral("\u1e50") << QByteArray("\xc1\xc5" "O"); // LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + QTest::newRow("1e51") << QStringLiteral("\u1e51") << QByteArray("\xc1\xc5" "o"); // LATIN SMALL LETTER O WITH MACRON AND GRAVE + QTest::newRow("1e52") << QStringLiteral("\u1e52") << QByteArray("\xc2\xc5" "O"); // LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + QTest::newRow("1e53") << QStringLiteral("\u1e53") << QByteArray("\xc2\xc5" "o"); // LATIN SMALL LETTER O WITH MACRON AND ACUTE + QTest::newRow("1e54") << QStringLiteral("\u1e54") << QByteArray("\xc2" "P"); // LATIN CAPITAL LETTER P WITH ACUTE + QTest::newRow("1e55") << QStringLiteral("\u1e55") << QByteArray("\xc2" "p"); // LATIN SMALL LETTER P WITH ACUTE + QTest::newRow("1e56") << QStringLiteral("\u1e56") << QByteArray("\xc7" "P"); // LATIN CAPITAL LETTER P WITH DOT ABOVE + QTest::newRow("1e57") << QStringLiteral("\u1e57") << QByteArray("\xc7" "p"); // LATIN SMALL LETTER P WITH DOT ABOVE + QTest::newRow("1e58") << QStringLiteral("\u1e58") << QByteArray("\xc7" "R"); // LATIN CAPITAL LETTER R WITH DOT ABOVE + QTest::newRow("1e59") << QStringLiteral("\u1e59") << QByteArray("\xc7" "r"); // LATIN SMALL LETTER R WITH DOT ABOVE + QTest::newRow("1e5a") << QStringLiteral("\u1e5a") << QByteArray("\xd6" "R"); // LATIN CAPITAL LETTER R WITH DOT BELOW + QTest::newRow("1e5b") << QStringLiteral("\u1e5b") << QByteArray("\xd6" "r"); // LATIN SMALL LETTER R WITH DOT BELOW + QTest::newRow("1e5c") << QStringLiteral("\u1e5c") << QByteArray("\xc5\xd6" "R"); // LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + QTest::newRow("1e5d") << QStringLiteral("\u1e5d") << QByteArray("\xc5\xd6" "r"); // LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + QTest::newRow("1e60") << QStringLiteral("\u1e60") << QByteArray("\xc7" "S"); // LATIN CAPITAL LETTER S WITH DOT ABOVE + QTest::newRow("1e61") << QStringLiteral("\u1e61") << QByteArray("\xc7" "s"); // LATIN SMALL LETTER S WITH DOT ABOVE + QTest::newRow("1e62") << QStringLiteral("\u1e62") << QByteArray("\xd6" "S"); // LATIN CAPITAL LETTER S WITH DOT BELOW + QTest::newRow("1e63") << QStringLiteral("\u1e63") << QByteArray("\xd6" "s"); // LATIN SMALL LETTER S WITH DOT BELOW + QTest::newRow("1e64") << QStringLiteral("\u1e64") << QByteArray("\xc7\xc2" "S"); // LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + QTest::newRow("1e65") << QStringLiteral("\u1e65") << QByteArray("\xc7\xc2" "s"); // LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + QTest::newRow("1e66") << QStringLiteral("\u1e66") << QByteArray("\xc7\xcf" "S"); // LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + QTest::newRow("1e67") << QStringLiteral("\u1e67") << QByteArray("\xc7\xcf" "s"); // LATIN SMALL LETTER S WITH CARON AND DOT ABOVE + QTest::newRow("1e68") << QStringLiteral("\u1e68") << QByteArray("\xc7\xd6" "S"); // LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + QTest::newRow("1e69") << QStringLiteral("\u1e69") << QByteArray("\xc7\xd6" "s"); // LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + QTest::newRow("1e6a") << QStringLiteral("\u1e6a") << QByteArray("\xc7" "T"); // LATIN CAPITAL LETTER T WITH DOT ABOVE + QTest::newRow("1e6b") << QStringLiteral("\u1e6b") << QByteArray("\xc7" "t"); // LATIN SMALL LETTER T WITH DOT ABOVE + QTest::newRow("1e6c") << QStringLiteral("\u1e6c") << QByteArray("\xd6" "T"); // LATIN CAPITAL LETTER T WITH DOT BELOW + QTest::newRow("1e6d") << QStringLiteral("\u1e6d") << QByteArray("\xd6" "t"); // LATIN SMALL LETTER T WITH DOT BELOW + QTest::newRow("1e70") << QStringLiteral("\u1e70") << QByteArray("\xdb" "T"); // LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW + QTest::newRow("1e71") << QStringLiteral("\u1e71") << QByteArray("\xdb" "t"); // LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW + QTest::newRow("1e72") << QStringLiteral("\u1e72") << QByteArray("\xd7" "U"); // LATIN CAPITAL LETTER U WITH DIAERESIS BELOW + QTest::newRow("1e73") << QStringLiteral("\u1e73") << QByteArray("\xd7" "u"); // LATIN SMALL LETTER U WITH DIAERESIS BELOW + QTest::newRow("1e76") << QStringLiteral("\u1e76") << QByteArray("\xdb" "U"); // LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW + QTest::newRow("1e77") << QStringLiteral("\u1e77") << QByteArray("\xdb" "u"); // LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW + QTest::newRow("1e78") << QStringLiteral("\u1e78") << QByteArray("\xc2\xc4" "U"); // LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + QTest::newRow("1e79") << QStringLiteral("\u1e79") << QByteArray("\xc2\xc4" "u"); // LATIN SMALL LETTER U WITH TILDE AND ACUTE + QTest::newRow("1e7a") << QStringLiteral("\u1e7a") << QByteArray("\xc8\xc5" "U"); // LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + QTest::newRow("1e7b") << QStringLiteral("\u1e7b") << QByteArray("\xc8\xc5" "u"); // LATIN SMALL LETTER U WITH MACRON AND DIAERESIS + QTest::newRow("1e7c") << QStringLiteral("\u1e7c") << QByteArray("\xc4" "V"); // LATIN CAPITAL LETTER V WITH TILDE + QTest::newRow("1e7d") << QStringLiteral("\u1e7d") << QByteArray("\xc4" "v"); // LATIN SMALL LETTER V WITH TILDE + QTest::newRow("1e7e") << QStringLiteral("\u1e7e") << QByteArray("\xd6" "V"); // LATIN CAPITAL LETTER V WITH DOT BELOW + QTest::newRow("1e7f") << QStringLiteral("\u1e7f") << QByteArray("\xd6" "v"); // LATIN SMALL LETTER V WITH DOT BELOW + QTest::newRow("1e80") << QStringLiteral("\u1e80") << QByteArray("\xc1" "W"); // LATIN CAPITAL LETTER W WITH GRAVE + QTest::newRow("1e81") << QStringLiteral("\u1e81") << QByteArray("\xc1" "w"); // LATIN SMALL LETTER W WITH GRAVE + QTest::newRow("1e82") << QStringLiteral("\u1e82") << QByteArray("\xc2" "W"); // LATIN CAPITAL LETTER W WITH ACUTE + QTest::newRow("1e83") << QStringLiteral("\u1e83") << QByteArray("\xc2" "w"); // LATIN SMALL LETTER W WITH ACUTE + QTest::newRow("1e84") << QStringLiteral("\u1e84") << QByteArray("\xc8" "W"); // LATIN CAPITAL LETTER W WITH DIAERESIS + QTest::newRow("1e85") << QStringLiteral("\u1e85") << QByteArray("\xc8" "w"); // LATIN SMALL LETTER W WITH DIAERESIS + QTest::newRow("1e86") << QStringLiteral("\u1e86") << QByteArray("\xc7" "W"); // LATIN CAPITAL LETTER W WITH DOT ABOVE + QTest::newRow("1e87") << QStringLiteral("\u1e87") << QByteArray("\xc7" "w"); // LATIN SMALL LETTER W WITH DOT ABOVE + QTest::newRow("1e88") << QStringLiteral("\u1e88") << QByteArray("\xd6" "W"); // LATIN CAPITAL LETTER W WITH DOT BELOW + QTest::newRow("1e89") << QStringLiteral("\u1e89") << QByteArray("\xd6" "w"); // LATIN SMALL LETTER W WITH DOT BELOW + QTest::newRow("1e8a") << QStringLiteral("\u1e8a") << QByteArray("\xc7" "X"); // LATIN CAPITAL LETTER X WITH DOT ABOVE + QTest::newRow("1e8b") << QStringLiteral("\u1e8b") << QByteArray("\xc7" "x"); // LATIN SMALL LETTER X WITH DOT ABOVE + QTest::newRow("1e8c") << QStringLiteral("\u1e8c") << QByteArray("\xc8" "X"); // LATIN CAPITAL LETTER X WITH DIAERESIS + QTest::newRow("1e8d") << QStringLiteral("\u1e8d") << QByteArray("\xc8" "x"); // LATIN SMALL LETTER X WITH DIAERESIS + QTest::newRow("1e8e") << QStringLiteral("\u1e8e") << QByteArray("\xc7" "Y"); // LATIN CAPITAL LETTER Y WITH DOT ABOVE + QTest::newRow("1e8f") << QStringLiteral("\u1e8f") << QByteArray("\xc7" "y"); // LATIN SMALL LETTER Y WITH DOT ABOVE + QTest::newRow("1e90") << QStringLiteral("\u1e90") << QByteArray("\xc3" "Z"); // LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + QTest::newRow("1e91") << QStringLiteral("\u1e91") << QByteArray("\xc3" "z"); // LATIN SMALL LETTER Z WITH CIRCUMFLEX + QTest::newRow("1e92") << QStringLiteral("\u1e92") << QByteArray("\xd6" "Z"); // LATIN CAPITAL LETTER Z WITH DOT BELOW + QTest::newRow("1e93") << QStringLiteral("\u1e93") << QByteArray("\xd6" "z"); // LATIN SMALL LETTER Z WITH DOT BELOW + QTest::newRow("1e97") << QStringLiteral("\u1e97") << QByteArray("\xc8" "t"); // LATIN SMALL LETTER T WITH DIAERESIS + QTest::newRow("1e98") << QStringLiteral("\u1e98") << QByteArray("\xca" "w"); // LATIN SMALL LETTER W WITH RING ABOVE + QTest::newRow("1e99") << QStringLiteral("\u1e99") << QByteArray("\xca" "y"); // LATIN SMALL LETTER Y WITH RING ABOVE + QTest::newRow("1ea0") << QStringLiteral("\u1ea0") << QByteArray("\xd6" "A"); // LATIN CAPITAL LETTER A WITH DOT BELOW + QTest::newRow("1ea1") << QStringLiteral("\u1ea1") << QByteArray("\xd6" "a"); // LATIN SMALL LETTER A WITH DOT BELOW + QTest::newRow("1ea2") << QStringLiteral("\u1ea2") << QByteArray("\xc0" "A"); // LATIN CAPITAL LETTER A WITH HOOK ABOVE + QTest::newRow("1ea3") << QStringLiteral("\u1ea3") << QByteArray("\xc0" "a"); // LATIN SMALL LETTER A WITH HOOK ABOVE + QTest::newRow("1ea4") << QStringLiteral("\u1ea4") << QByteArray("\xc2\xc3" "A"); // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + QTest::newRow("1ea5") << QStringLiteral("\u1ea5") << QByteArray("\xc2\xc3" "a"); // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + QTest::newRow("1ea6") << QStringLiteral("\u1ea6") << QByteArray("\xc1\xc3" "A"); // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + QTest::newRow("1ea7") << QStringLiteral("\u1ea7") << QByteArray("\xc1\xc3" "a"); // LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + QTest::newRow("1ea8") << QStringLiteral("\u1ea8") << QByteArray("\xc0\xc3" "A"); // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + QTest::newRow("1ea9") << QStringLiteral("\u1ea9") << QByteArray("\xc0\xc3" "a"); // LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + QTest::newRow("1eaa") << QStringLiteral("\u1eaa") << QByteArray("\xc4\xc3" "A"); // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + QTest::newRow("1eab") << QStringLiteral("\u1eab") << QByteArray("\xc4\xc3" "a"); // LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + QTest::newRow("1eac") << QStringLiteral("\u1eac") << QByteArray("\xc3\xd6" "A"); // LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + QTest::newRow("1ead") << QStringLiteral("\u1ead") << QByteArray("\xc3\xd6" "a"); // LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + QTest::newRow("1eae") << QStringLiteral("\u1eae") << QByteArray("\xc2\xc6" "A"); // LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + QTest::newRow("1eaf") << QStringLiteral("\u1eaf") << QByteArray("\xc2\xc6" "a"); // LATIN SMALL LETTER A WITH BREVE AND ACUTE + QTest::newRow("1eb0") << QStringLiteral("\u1eb0") << QByteArray("\xc1\xc6" "A"); // LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + QTest::newRow("1eb1") << QStringLiteral("\u1eb1") << QByteArray("\xc1\xc6" "a"); // LATIN SMALL LETTER A WITH BREVE AND GRAVE + QTest::newRow("1eb2") << QStringLiteral("\u1eb2") << QByteArray("\xc0\xc6" "A"); // LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + QTest::newRow("1eb3") << QStringLiteral("\u1eb3") << QByteArray("\xc0\xc6" "a"); // LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + QTest::newRow("1eb4") << QStringLiteral("\u1eb4") << QByteArray("\xc4\xc6" "A"); // LATIN CAPITAL LETTER A WITH BREVE AND TILDE + QTest::newRow("1eb5") << QStringLiteral("\u1eb5") << QByteArray("\xc4\xc6" "a"); // LATIN SMALL LETTER A WITH BREVE AND TILDE + QTest::newRow("1eb6") << QStringLiteral("\u1eb6") << QByteArray("\xc6\xd6" "A"); // LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + QTest::newRow("1eb7") << QStringLiteral("\u1eb7") << QByteArray("\xc6\xd6" "a"); // LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + QTest::newRow("1eb8") << QStringLiteral("\u1eb8") << QByteArray("\xd6" "E"); // LATIN CAPITAL LETTER E WITH DOT BELOW + QTest::newRow("1eb9") << QStringLiteral("\u1eb9") << QByteArray("\xd6" "e"); // LATIN SMALL LETTER E WITH DOT BELOW + QTest::newRow("1eba") << QStringLiteral("\u1eba") << QByteArray("\xc0" "E"); // LATIN CAPITAL LETTER E WITH HOOK ABOVE + QTest::newRow("1ebb") << QStringLiteral("\u1ebb") << QByteArray("\xc0" "e"); // LATIN SMALL LETTER E WITH HOOK ABOVE + QTest::newRow("1ebc") << QStringLiteral("\u1ebc") << QByteArray("\xc4" "E"); // LATIN CAPITAL LETTER E WITH TILDE + QTest::newRow("1ebd") << QStringLiteral("\u1ebd") << QByteArray("\xc4" "e"); // LATIN SMALL LETTER E WITH TILDE + QTest::newRow("1ebe") << QStringLiteral("\u1ebe") << QByteArray("\xc2\xc3" "E"); // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + QTest::newRow("1ebf") << QStringLiteral("\u1ebf") << QByteArray("\xc2\xc3" "e"); // LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + QTest::newRow("1ec0") << QStringLiteral("\u1ec0") << QByteArray("\xc1\xc3" "E"); // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + QTest::newRow("1ec1") << QStringLiteral("\u1ec1") << QByteArray("\xc1\xc3" "e"); // LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + QTest::newRow("1ec2") << QStringLiteral("\u1ec2") << QByteArray("\xc0\xc3" "E"); // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + QTest::newRow("1ec3") << QStringLiteral("\u1ec3") << QByteArray("\xc0\xc3" "e"); // LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + QTest::newRow("1ec4") << QStringLiteral("\u1ec4") << QByteArray("\xc4\xc3" "E"); // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + QTest::newRow("1ec5") << QStringLiteral("\u1ec5") << QByteArray("\xc4\xc3" "e"); // LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + QTest::newRow("1ec6") << QStringLiteral("\u1ec6") << QByteArray("\xc3\xd6" "E"); // LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + QTest::newRow("1ec7") << QStringLiteral("\u1ec7") << QByteArray("\xc3\xd6" "e"); // LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + QTest::newRow("1ec8") << QStringLiteral("\u1ec8") << QByteArray("\xc0" "I"); // LATIN CAPITAL LETTER I WITH HOOK ABOVE + QTest::newRow("1ec9") << QStringLiteral("\u1ec9") << QByteArray("\xc0" "i"); // LATIN SMALL LETTER I WITH HOOK ABOVE + QTest::newRow("1eca") << QStringLiteral("\u1eca") << QByteArray("\xd6" "I"); // LATIN CAPITAL LETTER I WITH DOT BELOW + QTest::newRow("1ecb") << QStringLiteral("\u1ecb") << QByteArray("\xd6" "i"); // LATIN SMALL LETTER I WITH DOT BELOW + QTest::newRow("1ecc") << QStringLiteral("\u1ecc") << QByteArray("\xd6" "O"); // LATIN CAPITAL LETTER O WITH DOT BELOW + QTest::newRow("1ecd") << QStringLiteral("\u1ecd") << QByteArray("\xd6" "o"); // LATIN SMALL LETTER O WITH DOT BELOW + QTest::newRow("1ece") << QStringLiteral("\u1ece") << QByteArray("\xc0" "O"); // LATIN CAPITAL LETTER O WITH HOOK ABOVE + QTest::newRow("1ecf") << QStringLiteral("\u1ecf") << QByteArray("\xc0" "o"); // LATIN SMALL LETTER O WITH HOOK ABOVE + QTest::newRow("1ed0") << QStringLiteral("\u1ed0") << QByteArray("\xc2\xc3" "O"); // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + QTest::newRow("1ed1") << QStringLiteral("\u1ed1") << QByteArray("\xc2\xc3" "o"); // LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + QTest::newRow("1ed2") << QStringLiteral("\u1ed2") << QByteArray("\xc1\xc3" "O"); // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + QTest::newRow("1ed3") << QStringLiteral("\u1ed3") << QByteArray("\xc1\xc3" "o"); // LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + QTest::newRow("1ed4") << QStringLiteral("\u1ed4") << QByteArray("\xc0\xc3" "O"); // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + QTest::newRow("1ed5") << QStringLiteral("\u1ed5") << QByteArray("\xc0\xc3" "o"); // LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + QTest::newRow("1ed6") << QStringLiteral("\u1ed6") << QByteArray("\xc4\xc3" "O"); // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + QTest::newRow("1ed7") << QStringLiteral("\u1ed7") << QByteArray("\xc4\xc3" "o"); // LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + QTest::newRow("1ed8") << QStringLiteral("\u1ed8") << QByteArray("\xc3\xd6" "O"); // LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + QTest::newRow("1ed9") << QStringLiteral("\u1ed9") << QByteArray("\xc3\xd6" "o"); // LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + QTest::newRow("1eda") << QStringLiteral("\u1eda") << QByteArray("\xc2\xce" "O"); // LATIN CAPITAL LETTER O WITH HORN AND ACUTE + QTest::newRow("1edb") << QStringLiteral("\u1edb") << QByteArray("\xc2\xce" "o"); // LATIN SMALL LETTER O WITH HORN AND ACUTE + QTest::newRow("1edc") << QStringLiteral("\u1edc") << QByteArray("\xc1\xce" "O"); // LATIN CAPITAL LETTER O WITH HORN AND GRAVE + QTest::newRow("1edd") << QStringLiteral("\u1edd") << QByteArray("\xc1\xce" "o"); // LATIN SMALL LETTER O WITH HORN AND GRAVE + QTest::newRow("1ede") << QStringLiteral("\u1ede") << QByteArray("\xc0\xce" "O"); // LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + QTest::newRow("1edf") << QStringLiteral("\u1edf") << QByteArray("\xc0\xce" "o"); // LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + QTest::newRow("1ee0") << QStringLiteral("\u1ee0") << QByteArray("\xc4\xce" "O"); // LATIN CAPITAL LETTER O WITH HORN AND TILDE + QTest::newRow("1ee1") << QStringLiteral("\u1ee1") << QByteArray("\xc4\xce" "o"); // LATIN SMALL LETTER O WITH HORN AND TILDE + QTest::newRow("1ee2") << QStringLiteral("\u1ee2") << QByteArray("\xd6\xce" "O"); // LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + QTest::newRow("1ee3") << QStringLiteral("\u1ee3") << QByteArray("\xd6\xce" "o"); // LATIN SMALL LETTER O WITH HORN AND DOT BELOW + QTest::newRow("1ee4") << QStringLiteral("\u1ee4") << QByteArray("\xd6" "U"); // LATIN CAPITAL LETTER U WITH DOT BELOW + QTest::newRow("1ee5") << QStringLiteral("\u1ee5") << QByteArray("\xd6" "u"); // LATIN SMALL LETTER U WITH DOT BELOW + QTest::newRow("1ee6") << QStringLiteral("\u1ee6") << QByteArray("\xc0" "U"); // LATIN CAPITAL LETTER U WITH HOOK ABOVE + QTest::newRow("1ee7") << QStringLiteral("\u1ee7") << QByteArray("\xc0" "u"); // LATIN SMALL LETTER U WITH HOOK ABOVE + QTest::newRow("1ee8") << QStringLiteral("\u1ee8") << QByteArray("\xc2\xce" "U"); // LATIN CAPITAL LETTER U WITH HORN AND ACUTE + QTest::newRow("1ee9") << QStringLiteral("\u1ee9") << QByteArray("\xc2\xce" "u"); // LATIN SMALL LETTER U WITH HORN AND ACUTE + QTest::newRow("1eea") << QStringLiteral("\u1eea") << QByteArray("\xc1\xce" "U"); // LATIN CAPITAL LETTER U WITH HORN AND GRAVE + QTest::newRow("1eeb") << QStringLiteral("\u1eeb") << QByteArray("\xc1\xce" "u"); // LATIN SMALL LETTER U WITH HORN AND GRAVE + QTest::newRow("1eec") << QStringLiteral("\u1eec") << QByteArray("\xc0\xce" "U"); // LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + QTest::newRow("1eed") << QStringLiteral("\u1eed") << QByteArray("\xc0\xce" "u"); // LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + QTest::newRow("1eee") << QStringLiteral("\u1eee") << QByteArray("\xc4\xce" "U"); // LATIN CAPITAL LETTER U WITH HORN AND TILDE + QTest::newRow("1eef") << QStringLiteral("\u1eef") << QByteArray("\xc4\xce" "u"); // LATIN SMALL LETTER U WITH HORN AND TILDE + QTest::newRow("1ef0") << QStringLiteral("\u1ef0") << QByteArray("\xd6\xce" "U"); // LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + QTest::newRow("1ef1") << QStringLiteral("\u1ef1") << QByteArray("\xd6\xce" "u"); // LATIN SMALL LETTER U WITH HORN AND DOT BELOW + QTest::newRow("1ef2") << QStringLiteral("\u1ef2") << QByteArray("\xc1" "Y"); // LATIN CAPITAL LETTER Y WITH GRAVE + QTest::newRow("1ef3") << QStringLiteral("\u1ef3") << QByteArray("\xc1" "y"); // LATIN SMALL LETTER Y WITH GRAVE + QTest::newRow("1ef4") << QStringLiteral("\u1ef4") << QByteArray("\xd6" "Y"); // LATIN CAPITAL LETTER Y WITH DOT BELOW + QTest::newRow("1ef5") << QStringLiteral("\u1ef5") << QByteArray("\xd6" "y"); // LATIN SMALL LETTER Y WITH DOT BELOW + QTest::newRow("1ef6") << QStringLiteral("\u1ef6") << QByteArray("\xc0" "Y"); // LATIN CAPITAL LETTER Y WITH HOOK ABOVE + QTest::newRow("1ef7") << QStringLiteral("\u1ef7") << QByteArray("\xc0" "y"); // LATIN SMALL LETTER Y WITH HOOK ABOVE + QTest::newRow("1ef8") << QStringLiteral("\u1ef8") << QByteArray("\xc4" "Y"); // LATIN CAPITAL LETTER Y WITH TILDE + QTest::newRow("1ef9") << QStringLiteral("\u1ef9") << QByteArray("\xc4" "y"); // LATIN SMALL LETTER Y WITH TILDE +// QTest::newRow("1fef") << QStringLiteral("\u1fef") << QByteArray("`"); // GREEK VARIA + QTest::newRow("2018") << QStringLiteral("\u2018") << QByteArray("\xa9"); // LEFT SINGLE QUOTATION MARK + QTest::newRow("2019") << QStringLiteral("\u2019") << QByteArray("\xb9"); // RIGHT SINGLE QUOTATION MARK + QTest::newRow("201a") << QStringLiteral("\u201a") << QByteArray("\xb2"); // SINGLE LOW-9 QUOTATION MARK + QTest::newRow("201c") << QStringLiteral("\u201c") << QByteArray("\xaa"); // LEFT DOUBLE QUOTATION MARK + QTest::newRow("201d") << QStringLiteral("\u201d") << QByteArray("\xba"); // RIGHT DOUBLE QUOTATION MARK + QTest::newRow("201e") << QStringLiteral("\u201e") << QByteArray("\xa2"); // DOUBLE LOW-9 QUOTATION MARK + QTest::newRow("2020") << QStringLiteral("\u2020") << QByteArray("\xa6"); // DAGGER + QTest::newRow("2021") << QStringLiteral("\u2021") << QByteArray("\xb6"); // DOUBLE DAGGER + QTest::newRow("2032") << QStringLiteral("\u2032") << QByteArray("\xa8"); // PRIME + QTest::newRow("2033") << QStringLiteral("\u2033") << QByteArray("\xb8"); // DOUBLE PRIME + QTest::newRow("2117") << QStringLiteral("\u2117") << QByteArray("\xae"); // SOUND RECORDING COPYRIGHT +// QTest::newRow("212b") << QStringLiteral("\u212b") << QByteArray("\xca" "A"); // ANGSTROM SIGN + QTest::newRow("266d") << QStringLiteral("\u266d") << QByteArray("\xac"); // MUSIC FLAT SIGN + QTest::newRow("266f") << QStringLiteral("\u266f") << QByteArray("\xbc"); // MUSIC SHARP SIGN +// QTest::newRow("fe20") << QStringLiteral("\ufe20") << QByteArray("\xdd"); // COMBINING LIGATURE LEFT HALF +// QTest::newRow("fe21") << QStringLiteral("\ufe21") << QByteArray("\xde"); // COMBINING LIGATURE RIGHT HALF +// QTest::newRow("fe23") << QStringLiteral("\ufe23") << QByteArray("\xdf"); // COMBINING DOUBLE TILDE RIGHT HALF +} diff --git a/src/tests/iso5426test.h b/src/tests/iso5426test.h new file mode 100644 index 00000000..d3cf22d2 --- /dev/null +++ b/src/tests/iso5426test.h @@ -0,0 +1,40 @@ +/*************************************************************************** + Copyright (C) 2020 Robby Stephenson + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + * * + ***************************************************************************/ + +#ifndef ISO5426TEST_H +#define ISO5426TEST_H + +#include + +class Iso5426Test : public QObject { +Q_OBJECT + +private Q_SLOTS: + void testStrings(); + void testStrings_data(); + void testCharacters(); + void testCharacters_data(); +}; + +#endif diff --git a/src/utils/iso5426converter.cpp b/src/utils/iso5426converter.cpp index 187505ab..8babfc94 100644 --- a/src/utils/iso5426converter.cpp +++ b/src/utils/iso5426converter.cpp @@ -1,895 +1,1223 @@ /*************************************************************************** Copyright (C) 2006-2009 Robby Stephenson ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * * published by the Free Software Foundation; either version 2 of * * the License or (at your option) version 3 or any later version * * accepted by the membership of KDE e.V. (or its successor approved * * by the membership of KDE e.V.), which shall act as a proxy * * defined in Section 14 of version 3 of the license. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * * * ***************************************************************************/ // This class is adapted from Iso5426ToUnicode from the MARC4J project, available // from https://github.com/marc4j/marc4j, with the following notice: // * Copyright (C) 2002 Bas Peters (mail@bpeters.com) // * Copyright (C) 2002 Yves Pratter (ypratter@club-internet.fr) // // That source was released under the terms of the GNU Lesser General Public // License, version 2.1. In accordance with Condition 3 of that license, // I am applying the terms of the GNU General Public License to the source // code, and including a large portion of it here #include "iso5426converter.h" #include "../tellico_debug.h" #include #include using Tellico::Iso5426Converter; QString Iso5426Converter::toUtf8(const QByteArray& text_) { const uint len = text_.length(); QString result; result.reserve(len); - uint pos = 0; +// uint pos = 0; for(uint i = 0; i < len; ++i) { uchar c = text_[i]; if(isAscii(c)) { - result[pos++] = c; +// result[pos++] = c; + result.append(QLatin1Char(c)); +// pos++; } else if(isCombining(c) && hasNext(i, len)) { // this is a hack // use the diaeresis instead of umlaut // works for SUDOC if(c == 0xC9) { c = 0xC8; } - QChar d = getCombiningChar(c * 256 + text_[i + 1]); + // could be two combining characters + uint comb = c * 256; + uint skip = 1; + if(isCombining(text_[i + 1]) && hasNext(i+1, len)) { + comb = (comb + text_[i + 1]) * 256; + skip++; + } + QChar d = getCombiningChar(comb + text_[i + skip]); if(!d.isNull()) { - result[pos++] = d; - ++i; +// result[pos++] = d; + result.append(d); + i += skip; } else { - result[pos++] = getChar(c); +// result[pos++] = getChar(c); + result.append(getChar(c)); } } else { - result[pos++] = getChar(c); +// result[pos++] = getChar(c); + result.append(getChar(c)); } } result.squeeze(); return result; } inline bool Iso5426Converter::hasNext(uint pos, uint len) { return pos < (len - 1); } inline bool Iso5426Converter::isAscii(uchar c) { return c <= 0x7F; } inline bool Iso5426Converter::isCombining(uchar c) { return c >= 0xC0 && c <= 0xDF; } // Source : https://www.itscj.ipsj.or.jp/iso-ir/053.pdf QChar Iso5426Converter::getChar(uchar c) { switch(c) { case 0xA1: return 0x00A1; // 2/1 inverted exclamation mark case 0xA2: - return 0x201C; // 2/2 left low double quotation mark + return 0x201E; // 2/2 left low double quotation mark // was 0x201C case 0xA3: return 0x00A3; // 2/3 pound sign case 0xA4: return 0x0024; // 2/4 dollar sign case 0xA5: return 0x00A5; // 2/5 yen sign case 0xA6: return 0x2020; // 2/6 single dagger case 0xA7: return 0x00A7; // 2/7 paragraph (section) case 0xA8: return 0x2032; // 2/8 prime case 0xA9: return 0x2018; // 2/9 left high single quotation mark case 0xAA: return 0x201C; // 2/10 left high double quotation mark case 0xAB: return 0x00AB; // 2/11 left angle quotation mark case 0xAC: return 0x266D; // 2/12 music flat case 0xAD: return 0x00A9; // 2/13 copyright sign case 0xAE: return 0x2117; // 2/14 sound recording copyright sign case 0xAF: return 0x00AE; // 2/15 trade mark sign case 0xB0: return 0x0639; // 3/0 ayn [ain] case 0xB1: return 0x0623; // 3/1 alif/hamzah [alef with hamza above] case 0xB2: - return 0x2018; // 3/2 left low single quotation mark + return 0x201A; // 3/2 left low single quotation mark // was 0x2018 // 3/3 (this position shall not be used) // 3/4 (this position shall not be used) // 3/5 (this position shall not be used) case 0xB6: return 0x2021; // 3/6 double dagger case 0xB7: return 0x00B7; // 3/7 middle dot case 0xB8: return 0x2033; // 3/8 double prime case 0xB9: return 0x2019; // 3/9 right high single quotation mark case 0xBA: return 0x201D; // 3/10 right high double quotation mark case 0xBB: return 0x00BB; // 3/11 right angle quotation mark case 0xBC: return 0x266F; // 3/12 musical sharp case 0xBD: return 0x02B9; // 3/13 mjagkij znak case 0xBE: return 0x02BA; // 3/14 tverdyj znak case 0xBF: return 0x00BF; // 3/15 inverted question mark // 4/0 to 5/15 diacritic characters // 6/0 (this position shall not be used) case 0xE1: return 0x00C6; // 6/1 CAPITAL DIPHTHONG A WITH E case 0xE2: return 0x0110; // 6/2 CAPITAL LETTER D WITH STROKE // 6/3 (this position shall not be used) // 6/4 (this position shall not be used) // 6/5 (this position shall not be used) case 0xE6: return 0x0132; // 6/6 CAPITAL LETTER IJ // 6/7 (this position shall not be used) case 0xE8: return 0x0141; // 6/8 CAPITAL LETTER L WITH STROKE case 0xE9: return 0x00D8; // 6/9 CAPITAL LETTER O WITH SOLIDUS [oblique stroke] case 0xEA: return 0x0152; // 6/10 CAPITAL DIPHTONG OE // 6/11 (this position shall not be used) case 0xEC: return 0x00DE; // 6/12 CAPITAL LETTER THORN // 6/13 (this position shall not be used) // 6/14 (this position shall not be used) // 6/15 (this position shall not be used) // 7/0 (this position shall not be used) case 0xF1: return 0x00E6; // 7/1 small diphthong a with e + case 0xF2: + return 0x0111; // small letter d with stroke + case 0xF3: + return 0x00F0; // small letter eth // 7/4 (this position shall not be used) case 0xF5: return 0x0131; // 7/5 small letter i without dot case 0xF6: return 0x0133; // 7/6 small letter ij // 7/7 (this position shall not be used) case 0xF8: return 0x0142; // 7/8 small letter l with stroke case 0xF9: return 0x00F8; // 7/9 small letter o with solidus (oblique stroke) case 0xFA: return 0x0153; // 7/10 small diphtong oe case 0xFB: return 0x00DF; // 7/11 small letter sharp s case 0xFC: return 0x00FE; // 7/12 small letter thorn // 7/13 (this position shall not be used) // 7/14 (this position shall not be used) default: return QLatin1Char(c); } } QChar Iso5426Converter::getCombiningChar(uint c) { switch(c) { // 4/0 low rising tone mark case 0xC041: return 0x1EA2; // CAPITAL A WITH HOOK ABOVE case 0xC045: return 0x1EBA; // CAPITAL E WITH HOOK ABOVE case 0xC049: return 0x1EC8; // CAPITAL I WITH HOOK ABOVE case 0xC04F: return 0x1ECE; // CAPITAL O WITH HOOK ABOVE case 0xC055: return 0x1EE6; // CAPITAL U WITH HOOK ABOVE case 0xC059: return 0x1EF6; // CAPITAL Y WITH HOOK ABOVE case 0xC061: return 0x1EA3; // small a with hook above case 0xC065: return 0x1EBB; // small e with hook above case 0xC069: return 0x1EC9; // small i with hook above case 0xC06F: return 0x1ECF; // small o with hook above case 0xC075: return 0x1EE7; // small u with hook above case 0xC079: return 0x1EF7; // small y with hook above // 4/1 grave accent case 0xC141: return 0x00C0; // CAPITAL A WITH GRAVE ACCENT case 0xC145: return 0x00C8; // CAPITAL E WITH GRAVE ACCENT case 0xC149: return 0x00CC; // CAPITAL I WITH GRAVE ACCENT + case 0xC14E: + return 0x01F8; // CAPITAL LETTER N WITH GRAVE case 0xC14F: return 0x00D2; // CAPITAL O WITH GRAVE ACCENT case 0xC155: return 0x00D9; // CAPITAL U WITH GRAVE ACCENT case 0xC157: return 0x1E80; // CAPITAL W WITH GRAVE case 0xC159: return 0x1EF2; // CAPITAL Y WITH GRAVE case 0xC161: return 0x00E0; // small a with grave accent case 0xC165: return 0x00E8; // small e with grave accent case 0xC169: return 0x00EC; // small i with grave accent + case 0xC16E: + return 0x01F9; // SMALL LETTER N WITH GRAVE case 0xC16F: return 0x00F2; // small o with grave accent case 0xC175: return 0x00F9; // small u with grave accent case 0xC177: return 0x1E81; // small w with grave case 0xC179: return 0x1EF3; // small y with grave + case 0xC1E1: + return 0x01FC; // CAPITAL LETTER AE WITH ACUTE + case 0xC1E9: + return 0x01FE; // CAPITAL LETTER O WITH STROKE AND ACUTE + case 0xC1F1: + return 0x01FD; // SMALL LETTER AE WITH ACUTE + case 0xC1F9: + return 0x01FF; // Small LETTER O WITH STROKE AND ACUTE // 4/2 acute accent case 0xC241: return 0x00C1; // CAPITAL A WITH ACUTE ACCENT case 0xC243: return 0x0106; // CAPITAL C WITH ACUTE ACCENT case 0xC245: return 0x00C9; // CAPITAL E WITH ACUTE ACCENT case 0xC247: return 0x01F4; // CAPITAL G WITH ACUTE case 0xC249: return 0x00CD; // CAPITAL I WITH ACUTE ACCENT case 0xC24B: return 0x1E30; // CAPITAL K WITH ACUTE case 0xC24C: return 0x0139; // CAPITAL L WITH ACUTE ACCENT case 0xC24D: return 0x1E3E; // CAPITAL M WITH ACUTE case 0xC24E: return 0x0143; // CAPITAL N WITH ACUTE ACCENT case 0xC24F: return 0x00D3; // CAPITAL O WITH ACUTE ACCENT case 0xC250: return 0x1E54; // CAPITAL P WITH ACUTE case 0xC252: return 0x0154; // CAPITAL R WITH ACUTE ACCENT case 0xC253: return 0x015A; // CAPITAL S WITH ACUTE ACCENT case 0xC255: return 0x00DA; // CAPITAL U WITH ACUTE ACCENT case 0xC257: return 0x1E82; // CAPITAL W WITH ACUTE case 0xC259: return 0x00DD; // CAPITAL Y WITH ACUTE ACCENT case 0xC25A: return 0x0179; // CAPITAL Z WITH ACUTE ACCENT case 0xC261: return 0x00E1; // small a with acute accent case 0xC263: return 0x0107; // small c with acute accent case 0xC265: return 0x00E9; // small e with acute accent case 0xC267: return 0x01F5; // small g with acute case 0xC269: return 0x00ED; // small i with acute accent case 0xC26B: return 0x1E31; // small k with acute case 0xC26C: return 0x013A; // small l with acute accent case 0xC26D: return 0x1E3F; // small m with acute case 0xC26E: return 0x0144; // small n with acute accent case 0xC26F: return 0x00F3; // small o with acute accent case 0xC270: return 0x1E55; // small p with acute case 0xC272: return 0x0155; // small r with acute accent case 0xC273: return 0x015B; // small s with acute accent case 0xC275: return 0x00FA; // small u with acute accent case 0xC277: return 0x1E83; // small w with acute case 0xC279: return 0x00FD; // small y with acute accent case 0xC27A: return 0x017A; // small z with acute accent case 0xC2E1: return 0x01FC; // CAPITAL AE WITH ACUTE case 0xC2F1: return 0x01FD; // small ae with acute // 4/3 circumflex accent case 0xC341: return 0x00C2; // CAPITAL A WITH CIRCUMFLEX ACCENT case 0xC343: return 0x0108; // CAPITAL C WITH CIRCUMFLEX case 0xC345: return 0x00CA; // CAPITAL E WITH CIRCUMFLEX ACCENT case 0xC347: return 0x011C; // CAPITAL G WITH CIRCUMFLEX case 0xC348: return 0x0124; // CAPITAL H WITH CIRCUMFLEX case 0xC349: return 0x00CE; // CAPITAL I WITH CIRCUMFLEX ACCENT case 0xC34A: return 0x0134; // CAPITAL J WITH CIRCUMFLEX case 0xC34F: return 0x00D4; // CAPITAL O WITH CIRCUMFLEX ACCENT case 0xC353: return 0x015C; // CAPITAL S WITH CIRCUMFLEX case 0xC355: return 0x00DB; // CAPITAL U WITH CIRCUMFLEX case 0xC357: return 0x0174; // CAPITAL W WITH CIRCUMFLEX case 0xC359: return 0x0176; // CAPITAL Y WITH CIRCUMFLEX case 0xC35A: return 0x1E90; // CAPITAL Z WITH CIRCUMFLEX case 0xC361: return 0x00E2; // small a with circumflex accent case 0xC363: return 0x0109; // small c with circumflex case 0xC365: return 0x00EA; // small e with circumflex accent case 0xC367: return 0x011D; // small g with circumflex case 0xC368: return 0x0125; // small h with circumflex case 0xC369: return 0x00EE; // small i with circumflex accent case 0xC36A: return 0x0135; // small j with circumflex case 0xC36F: return 0x00F4; // small o with circumflex accent case 0xC373: return 0x015D; // small s with circumflex case 0xC375: return 0x00FB; // small u with circumflex case 0xC377: return 0x0175; // small w with circumflex case 0xC379: return 0x0177; // small y with circumflex case 0xC37A: return 0x1E91; // small z with circumflex // 4/4 tilde case 0xC441: return 0x00C3; // CAPITAL A WITH TILDE case 0xC445: return 0x1EBC; // CAPITAL E WITH TILDE case 0xC449: return 0x0128; // CAPITAL I WITH TILDE case 0xC44E: return 0x00D1; // CAPITAL N WITH TILDE case 0xC44F: return 0x00D5; // CAPITAL O WITH TILDE case 0xC455: return 0x0168; // CAPITAL U WITH TILDE case 0xC456: return 0x1E7C; // CAPITAL V WITH TILDE case 0xC459: return 0x1EF8; // CAPITAL Y WITH TILDE case 0xC461: return 0x00E3; // small a with tilde case 0xC465: return 0x1EBD; // small e with tilde case 0xC469: return 0x0129; // small i with tilde case 0xC46E: return 0x00F1; // small n with tilde case 0xC46F: return 0x00F5; // small o with tilde case 0xC475: return 0x0169; // small u with tilde case 0xC476: return 0x1E7D; // small v with tilde case 0xC479: return 0x1EF9; // small y with tilde + case 0xC4E1: // is this an error + return 0x01E2; // CAPITAL AE WITH MACRON + case 0xC4F1: + return 0x01E3; // small ae with macron // 4/5 macron case 0xC541: return 0x0100; // CAPITAL A WITH MACRON case 0xC545: return 0x0112; // CAPITAL E WITH MACRON case 0xC547: return 0x1E20; // CAPITAL G WITH MACRON case 0xC549: return 0x012A; // CAPITAL I WITH MACRON case 0xC54F: return 0x014C; // CAPITAL O WITH MACRON case 0xC555: return 0x016A; // CAPITAL U WITH MACRON + case 0xC559: + return 0x0232; // CAPITAL LETTER Y WITH MACRON case 0xC561: return 0x0101; // small a with macron case 0xC565: return 0x0113; // small e with macron case 0xC567: return 0x1E21; // small g with macron case 0xC569: return 0x012B; // small i with macron case 0xC56F: return 0x014D; // small o with macron case 0xC575: return 0x016B; // small u with macron + case 0xC579: + return 0x0233; // Small LETTER Y WITH MACRON case 0xC5E1: return 0x01E2; // CAPITAL AE WITH MACRON case 0xC5F1: return 0x01E3; // small ae with macron // 4/6 breve case 0xC641: return 0x0102; // CAPITAL A WITH BREVE case 0xC645: return 0x0114; // CAPITAL E WITH BREVE case 0xC647: return 0x011E; // CAPITAL G WITH BREVE case 0xC649: return 0x012C; // CAPITAL I WITH BREVE case 0xC64F: return 0x014E; // CAPITAL O WITH BREVE case 0xC655: return 0x016C; // CAPITAL U WITH BREVE case 0xC661: return 0x0103; // small a with breve case 0xC665: return 0x0115; // small e with breve case 0xC667: return 0x011F; // small g with breve case 0xC669: return 0x012D; // small i with breve case 0xC66F: return 0x014F; // small o with breve case 0xC675: return 0x016D; // small u with breve // 4/7 dot above + case 0xC741: + return 0x0226; // CAPITAL LETTER A WITH DOT ABOVE case 0xC742: return 0x1E02; // CAPITAL B WITH DOT ABOVE case 0xC743: return 0x010A; // CAPITAL C WITH DOT ABOVE case 0xC744: return 0x1E0A; // CAPITAL D WITH DOT ABOVE case 0xC745: return 0x0116; // CAPITAL E WITH DOT ABOVE case 0xC746: return 0x1E1E; // CAPITAL F WITH DOT ABOVE case 0xC747: return 0x0120; // CAPITAL G WITH DOT ABOVE case 0xC748: return 0x1E22; // CAPITAL H WITH DOT ABOVE case 0xC749: return 0x0130; // CAPITAL I WITH DOT ABOVE case 0xC74D: return 0x1E40; // CAPITAL M WITH DOT ABOVE case 0xC74E: return 0x1E44; // CAPITAL N WITH DOT ABOVE + case 0xC74F: + return 0x022E; // CAPITAL LETTER O WITH DOT ABOVE case 0xC750: return 0x1E56; // CAPITAL P WITH DOT ABOVE case 0xC752: return 0x1E58; // CAPITAL R WITH DOT ABOVE case 0xC753: return 0x1E60; // CAPITAL S WITH DOT ABOVE case 0xC754: return 0x1E6A; // CAPITAL T WITH DOT ABOVE case 0xC757: return 0x1E86; // CAPITAL W WITH DOT ABOVE case 0xC758: return 0x1E8A; // CAPITAL X WITH DOT ABOVE case 0xC759: return 0x1E8E; // CAPITAL Y WITH DOT ABOVE case 0xC75A: return 0x017B; // CAPITAL Z WITH DOT ABOVE + case 0xC761: + return 0x0227; // small LETTER A WITH DOT ABOVE case 0xC762: return 0x1E03; // small b with dot above case 0xC763: return 0x010B; // small c with dot above case 0xC764: return 0x1E0B; // small d with dot above case 0xC765: return 0x0117; // small e with dot above case 0xC766: return 0x1E1F; // small f with dot above case 0xC767: return 0x0121; // small g with dot above case 0xC768: return 0x1E23; // small h with dot above case 0xC76D: return 0x1E41; // small m with dot above case 0xC76E: return 0x1E45; // small n with dot above + case 0xC76F: + return 0x022F; // SMALL LETTER O WITH DOT ABOVE case 0xC770: return 0x1E57; // small p with dot above case 0xC772: return 0x1E59; // small r with dot above case 0xC773: return 0x1E61; // small s with dot above case 0xC774: return 0x1E6B; // small t with dot above case 0xC777: return 0x1E87; // small w with dot above case 0xC778: return 0x1E8B; // small x with dot above case 0xC779: return 0x1E8F; // small y with dot above case 0xC77A: return 0x017C; // small z with dot above // 4/8 trema, diaresis case 0xC820: return 0x00A8; // diaeresis case 0xC841: return 0x00C4; // CAPITAL A WITH DIAERESIS case 0xC845: return 0x00CB; // CAPITAL E WITH DIAERESIS case 0xC848: return 0x1E26; // CAPITAL H WITH DIAERESIS case 0xC849: return 0x00CF; // CAPITAL I WITH DIAERESIS case 0xC84F: return 0x00D6; // CAPITAL O WITH DIAERESIS case 0xC855: return 0x00DC; // CAPITAL U WITH DIAERESIS case 0xC857: return 0x1E84; // CAPITAL W WITH DIAERESIS case 0xC858: return 0x1E8C; // CAPITAL X WITH DIAERESIS case 0xC859: return 0x0178; // CAPITAL Y WITH DIAERESIS case 0xC861: return 0x00E4; // small a with diaeresis case 0xC865: return 0x00EB; // small e with diaeresis case 0xC868: return 0x1E27; // small h with diaeresis case 0xC869: return 0x00EF; // small i with diaeresis case 0xC86F: return 0x00F6; // small o with diaeresis case 0xC874: return 0x1E97; // small t with diaeresis case 0xC875: return 0x00FC; // small u with diaeresis case 0xC877: return 0x1E85; // small w with diaeresis case 0xC878: return 0x1E8D; // small x with diaeresis case 0xC879: return 0x00FF; // small y with diaeresis // 4/9 umlaut case 0xC920: return 0x00A8; // [diaeresis] // 4/10 circle above case 0xCA41: return 0x00C5; // CAPITAL A WITH RING ABOVE - case 0xCAAD: + case 0xCA55: // was CAAD return 0x016E; // CAPITAL U WITH RING ABOVE case 0xCA61: return 0x00E5; // small a with ring above case 0xCA75: return 0x016F; // small u with ring above case 0xCA77: return 0x1E98; // small w with ring above case 0xCA79: return 0x1E99; // small y with ring above // 4/11 high comma off centre // 4/12 inverted high comma centred // 4/13 double acute accent case 0xCD4F: return 0x0150; // CAPITAL O WITH DOUBLE ACUTE case 0xCD55: return 0x0170; // CAPITAL U WITH DOUBLE ACUTE case 0xCD6F: return 0x0151; // small o with double acute case 0xCD75: return 0x0171; // small u with double acute // 4/14 horn - case 0xCE54: + case 0xCE4F: // was 0xCE54 return 0x01A0; // LATIN CAPITAL LETTER O WITH HORN case 0xCE55: return 0x01AF; // LATIN CAPITAL LETTER U WITH HORN - case 0xCE74: + case 0xCE6F: // was 0xCE74 return 0x01A1; // latin small letter o with horn case 0xCE75: return 0x01B0; // latin small letter u with horn // 4/15 caron (hacek) case 0xCF41: return 0x01CD; // CAPITAL A WITH CARON case 0xCF43: return 0x010C; // CAPITAL C WITH CARON case 0xCF44: return 0x010E; // CAPITAL D WITH CARON case 0xCF45: return 0x011A; // CAPITAL E WITH CARON case 0xCF47: return 0x01E6; // CAPITAL G WITH CARON + case 0xCF48: + return 0x021E; // CAPITAL LETTER H WITH CARON case 0xCF49: return 0x01CF; // CAPITAL I WITH CARON case 0xCF4B: return 0x01E8; // CAPITAL K WITH CARON case 0xCF4C: return 0x013D; // CAPITAL L WITH CARON case 0xCF4E: return 0x0147; // CAPITAL N WITH CARON case 0xCF4F: return 0x01D1; // CAPITAL O WITH CARON case 0xCF52: return 0x0158; // CAPITAL R WITH CARON case 0xCF53: return 0x0160; // CAPITAL S WITH CARON case 0xCF54: return 0x0164; // CAPITAL T WITH CARON case 0xCF55: return 0x01D3; // CAPITAL U WITH CARON case 0xCF5A: return 0x017D; // CAPITAL Z WITH CARON case 0xCF61: return 0x01CE; // small a with caron case 0xCF63: return 0x010D; // small c with caron case 0xCF64: return 0x010F; // small d with caron case 0xCF65: return 0x011B; // small e with caron case 0xCF67: return 0x01E7; // small g with caron + case 0xCF68: + return 0x021F; // small LETTER H WITH CARON case 0xCF69: return 0x01D0; // small i with caron case 0xCF6A: return 0x01F0; // small j with caron case 0xCF6B: return 0x01E9; // small k with caron case 0xCF6C: return 0x013E; // small l with caron case 0xCF6E: return 0x0148; // small n with caron case 0xCF6F: return 0x01D2; // small o with caron case 0xCF72: return 0x0159; // small r with caron case 0xCF73: return 0x0161; // small s with caron case 0xCF74: return 0x0165; // small t with caron case 0xCF75: return 0x01D4; // small u with caron case 0xCF7A: return 0x017E; // small z with caron // 5/0 cedilla case 0xD020: return 0x00B8; // cedilla case 0xD043: return 0x00C7; // CAPITAL C WITH CEDILLA case 0xD044: return 0x1E10; // CAPITAL D WITH CEDILLA + case 0xD045: + return 0x0228; // CAPITAL LETTER E WITH CEDILLA case 0xD047: return 0x0122; // CAPITAL G WITH CEDILLA case 0xD048: return 0x1E28; // CAPITAL H WITH CEDILLA case 0xD04B: return 0x0136; // CAPITAL K WITH CEDILLA case 0xD04C: return 0x013B; // CAPITAL L WITH CEDILLA case 0xD04E: return 0x0145; // CAPITAL N WITH CEDILLA case 0xD052: return 0x0156; // CAPITAL R WITH CEDILLA case 0xD053: return 0x015E; // CAPITAL S WITH CEDILLA case 0xD054: return 0x0162; // CAPITAL T WITH CEDILLA case 0xD063: return 0x00E7; // small c with cedilla case 0xD064: return 0x1E11; // small d with cedilla + case 0xD065: + return 0x0229; // small LETTER E WITH CEDILLA case 0xD067: return 0x0123; // small g with cedilla case 0xD068: return 0x1E29; // small h with cedilla case 0xD06B: return 0x0137; // small k with cedilla case 0xD06C: return 0x013C; // small l with cedilla case 0xD06E: return 0x0146; // small n with cedilla case 0xD072: return 0x0157; // small r with cedilla case 0xD073: return 0x015F; // small s with cedilla case 0xD074: return 0x0163; // small t with cedilla // 5/1 rude // 5/2 hook to left + case 0xD253: + return 0x0218; // CAPITAL LETTER S WITH COMMA BELOW + case 0xD254: + return 0x021A; // CAPITAL LETTER T WITH COMMA BELOW + case 0xD273: + return 0x0219; // Small LETTER S WITH COMMA BELOW + case 0xD274: + return 0x021B; // Small LETTER T WITH COMMA BELOW // 5/3 ogonek (hook to right) case 0xD320: return 0x02DB; // ogonek case 0xD341: return 0x0104; // CAPITAL A WITH OGONEK case 0xD345: return 0x0118; // CAPITAL E WITH OGONEK case 0xD349: return 0x012E; // CAPITAL I WITH OGONEK case 0xD34F: return 0x01EA; // CAPITAL O WITH OGONEK case 0xD355: return 0x0172; // CAPITAL U WITH OGONEK case 0xD361: return 0x0105; // small a with ogonek case 0xD365: return 0x0119; // small e with ogonek case 0xD369: return 0x012F; // small i with ogonek case 0xD36F: return 0x01EB; // small o with ogonek case 0xD375: return 0x0173; // small u with ogonek // 5/4 circle below case 0xD441: return 0x1E00; // CAPITAL A WITH RING BELOW case 0xD461: return 0x1E01; // small a with ring below - - // 5/5 half circle below - case 0xF948: - return 0x1E2A; // CAPITAL H WITH BREVE BELOW - case 0xF968: - return 0x1E2B; // small h with breve below + case 0xD548: + return 0x1E2A; // CAPITAL LETTER H WITH BREVE BELOW + case 0xD568: + return 0x1E2B; // small LETTER H WITH BREVE BELOW // 5/6 dot below case 0xD641: return 0x1EA0; // CAPITAL A WITH DOT BELOW case 0xD642: return 0x1E04; // CAPITAL B WITH DOT BELOW case 0xD644: return 0x1E0C; // CAPITAL D WITH DOT BELOW case 0xD645: return 0x1EB8; // CAPITAL E WITH DOT BELOW case 0xD648: return 0x1E24; // CAPITAL H WITH DOT BELOW case 0xD649: return 0x1ECA; // CAPITAL I WITH DOT BELOW case 0xD64B: return 0x1E32; // CAPITAL K WITH DOT BELOW case 0xD64C: return 0x1E36; // CAPITAL L WITH DOT BELOW case 0xD64D: return 0x1E42; // CAPITAL M WITH DOT BELOW case 0xD64E: return 0x1E46; // CAPITAL N WITH DOT BELOW case 0xD64F: return 0x1ECC; // CAPITAL O WITH DOT BELOW case 0xD652: return 0x1E5A; // CAPITAL R WITH DOT BELOW case 0xD653: return 0x1E62; // CAPITAL S WITH DOT BELOW case 0xD654: return 0x1E6C; // CAPITAL T WITH DOT BELOW case 0xD655: return 0x1EE4; // CAPITAL U WITH DOT BELOW case 0xD656: return 0x1E7E; // CAPITAL V WITH DOT BELOW case 0xD657: return 0x1E88; // CAPITAL W WITH DOT BELOW case 0xD659: return 0x1EF4; // CAPITAL Y WITH DOT BELOW case 0xD65A: return 0x1E92; // CAPITAL Z WITH DOT BELOW case 0xD661: return 0x1EA1; // small a with dot below case 0xD662: return 0x1E05; // small b with dot below case 0xD664: return 0x1E0D; // small d with dot below case 0xD665: return 0x1EB9; // small e with dot below case 0xD668: return 0x1E25; // small h with dot below case 0xD669: return 0x1ECB; // small i with dot below case 0xD66B: return 0x1E33; // small k with dot below case 0xD66C: return 0x1E37; // small l with dot below case 0xD66D: return 0x1E43; // small m with dot below case 0xD66E: return 0x1E47; // small n with dot below case 0xD66F: return 0x1ECD; // small o with dot below case 0xD672: return 0x1E5B; // small r with dot below case 0xD673: return 0x1E63; // small s with dot below case 0xD674: return 0x1E6D; // small t with dot below case 0xD675: return 0x1EE5; // small u with dot below case 0xD676: return 0x1E7F; // small v with dot below case 0xD677: return 0x1E89; // small w with dot below case 0xD679: return 0x1EF5; // small y with dot below case 0xD67A: return 0x1E93; // small z with dot below // 5/7 double dot below case 0xD755: return 0x1E72; // CAPITAL U WITH DIAERESIS BELOW case 0xD775: return 0x1E73; // small u with diaeresis below // 5/8 underline case 0xD820: return 0x005F; // underline // 5/9 double underline case 0xD920: return 0x2017; // double underline // 5/10 small low vertical bar case 0xDA20: return 0x02CC; // + case 0xDB44: + return 0x1E12; // CAPITAL LETTER D WITH CIRCUMFLEX BELOW + case 0xDB45: + return 0x1E18; // CAPITAL LETTER E WITH CIRCUMFLEX BELOW + case 0xDB4C: + return 0x1E3C; // CAPITAL LETTER L WITH CIRCUMFLEX BELOW + case 0xDB4E: + return 0x1E4A; // CAPITAL LETTER N WITH CIRCUMFLEX BELOW + case 0xDB54: + return 0x1E70; // CAPITAL LETTER T WITH CIRCUMFLEX BELOW + case 0xDB55: + return 0x1E76; // CAPITAL LETTER U WITH CIRCUMFLEX BELOW + case 0xDB64: + return 0x1E13; // SMALL LETTER D WITH CIRCUMFLEX BELOW + case 0xDB65: + return 0x1E19; // SMALL LETTER E WITH CIRCUMFLEX BELOW + case 0xDB6C: + return 0x1E3D; // Small LETTER L WITH CIRCUMFLEX BELOW + case 0xDB6E: + return 0x1E4B; // SMALL LETTER N WITH CIRCUMFLEX BELOW + case 0xDB74: + return 0x1E71; // SMALL LETTER T WITH CIRCUMFLEX BELOW + case 0xDB75: + return 0x1E77; // SMALL LETTER U WITH CIRCUMFLEX BELOW + + // 5/5 half circle below + case 0xF948: + return 0x1E2A; // CAPITAL H WITH BREVE BELOW + case 0xF968: + return 0x1E2B; // small h with breve below + // 5/11 circumflex below // 5/12 (this position shall not be used) // 5/13 left half of ligature sign and of double tilde // 5/14 right half of ligature sign // 5/15 right half of double tilde + case 0xBFC341: + return 0x1EA8; // CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + case 0xBFC345: + return 0x1EC2; // CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + case 0xBFC34F: + return 0x1ED4; // CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + case 0xBFC361: + return 0x1EA9; // SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + case 0xBFC365: + return 0x1EC3; // SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + case 0xBFC36F: + return 0x1ED5; // SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + case 0xBFC641: + return 0x1EB2; // CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + case 0xBFC661: + return 0x1EB3; // SMALL LETTER A WITH BREVE AND HOOK ABOVE + case 0xBFCE4F: + return 0x1EDE; // CAPITAL LETTER O WITH HORN AND HOOK ABOVE + case 0xBFCE55: + return 0x1EEC; // CAPITAL LETTER U WITH HORN AND HOOK ABOVE + case 0xBFCE6F: + return 0x1EDF; // SMALL LETTER O WITH HORN AND HOOK ABOVE + case 0xBFCE75: + return 0x1EED; // SMALL LETTER U WITH HORN AND HOOK ABOVE + + case 0xC0C341: + return 0x1EA6; // CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + case 0xC0C345: + return 0x1EC0; // CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + case 0xC0C34F: + return 0x1ED2; // CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + case 0xC0C361: + return 0x1EA7; // SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + case 0xC0C365: + return 0x1EC1; // SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + case 0xC0C36F: + return 0x1ED3; // SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + case 0xC0C545: + return 0x1E14; // CAPITAL LETTER E WITH MACRON AND GRAVE + case 0xC0C54F: + return 0x1E50; // CAPITAL LETTER O WITH MACRON AND GRAVE + case 0xC0C565: + return 0x1E15; // SMALL LETTER E WITH MACRON AND GRAVE + case 0xC0C56F: + return 0x1E51; // SMALL LETTER O WITH MACRON AND GRAVE + case 0xC0C641: + return 0x1EB0; // CAPITAL LETTER A WITH BREVE AND GRAVE + case 0xC0C661: + return 0x1EB1; // SMALL LETTER A WITH BREVE AND GRAVE + case 0xC0C855: + return 0x01DB; // Capital Letter U with Diaeresis and GRAVE + case 0xC0C875: + return 0x01DC; // Small Letter U with Diaeresis and GRAVE + case 0xC0CE4F: + return 0x1EDC; // CAPITAL LETTER O WITH HORN AND GRAVE + case 0xC0CE55: + return 0x1EEA; // CAPITAL LETTER U WITH HORN AND GRAVE + case 0xC0CE6F: + return 0x1EDD; // SMALL LETTER O WITH HORN AND GRAVE + case 0xC0CE75: + return 0x1EEB; // SMALL LETTER U WITH HORN AND GRAVE + + case 0xC1C341: + return 0x1EA4; // CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + case 0xC1C345: + return 0x1EBE; // CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + case 0xC1C34F: + return 0x1ED0; // CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + case 0xC1C361: + return 0x1EA5; // SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + case 0xC1C365: + return 0x1EBF; // SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + case 0xC1C36F: + return 0x1ED1; // SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + case 0xC1C44F: + return 0x1E4C; // CAPITAL LETTER O WITH TILDE AND ACUTE + case 0xC1C455: + return 0x1E78; // CAPITAL LETTER U WITH TILDE AND ACUTE + case 0xC1C46F: + return 0x1E4D; // SMALL LETTER O WITH TILDE AND ACUTE + case 0xC1C475: + return 0x1E79; // SMALL LETTER U WITH TILDE AND ACUTE + case 0xC1C545: + return 0x1E16; // CAPITAL LETTER E WITH MACRON AND ACUTE + case 0xC1C565: + return 0x1E17; // SMALL LETTER E WITH MACRON AND ACUTE + case 0xC1C54F: + return 0x1E52; // CAPITAL LETTER O WITH MACRON AND ACUTE + case 0xC1C56F: + return 0x1E53; // SMALL LETTER O WITH MACRON AND ACUTE + case 0xC1C641: + return 0x1EAE; // CAPITAL LETTER A WITH BREVE AND ACUTE + case 0xC1C661: + return 0x1EAF; // SMALL LETTER A WITH BREVE AND ACUTE + case 0xC1C849: + return 0x1E2E; // CAPITAL LETTER I WITH DIAERESIS AND ACUTE + case 0xC1C855: + return 0x01D7; // Capital Letter U with Diaeresis and ACUTE + case 0xC1C869: + return 0x1E2F; // Small LETTER I WITH DIAERESIS AND ACUTE + case 0xC1C875: + return 0x01D8; // Small Letter U with Diaeresis and ACUTE + case 0xC1CA41: + return 0x01FA; // CAPITAL LETTER A WITH RING ABOVE AND ACUTE + case 0xC1CA61: + return 0x01FB; // SMALL LETTER A WITH RING ABOVE AND ACUTE + case 0xC1CE4F: + return 0x1EDA; // CAPITAL LETTER O WITH HORN AND ACUTE + case 0xC1CE55: + return 0x1EE8; // CAPITAL LETTER U WITH HORN AND ACUTE + case 0xC1CE6F: + return 0x1EDB; // SMALL LETTER O WITH HORN AND ACUTE + case 0xC1CE75: + return 0x1EE9; // small LETTER U WITH HORN AND ACUTE + case 0xC1D043: + return 0x1E08; // CAPITAL LETTER C WITH CEDILLA AND ACUTE + case 0xC1D063: + return 0x1E09; // Small LETTER C WITH CEDILLA AND ACUTE + + case 0xC2D641: + return 0x1EAC; // CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + case 0xC2D645: + return 0x1EC6; // CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + case 0xC2D64F: + return 0x1ED8; // CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + case 0xC2D661: + return 0x1EAD; // SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + case 0xC2D665: + return 0x1EC7; // SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + case 0xC2D66F: + return 0x1ED9; // SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + + case 0xC3C341: + return 0x1EAA; // CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + case 0xC3C345: + return 0x1EC4; // CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + case 0xC3C34F: + return 0x1ED6; // CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + case 0xC3C361: + return 0x1EAB; // SMALL LETTER A WITH CIRCUMFLEX AND TILDE + case 0xC3C365: + return 0x1EC5; // SMALL LETTER E WITH CIRCUMFLEX AND TILDE + case 0xC3C36F: + return 0x1ED7; // SMALL LETTER O WITH CIRCUMFLEX AND TILDE + case 0xC3C641: + return 0x1EB4; // CAPITAL LETTER A WITH BREVE AND TILDE + case 0xC3C661: + return 0x1EB5; // SMALL LETTER A WITH BREVE AND TILDE + case 0xC3CE4F: + return 0x1EE0; // CAPITAL LETTER O WITH HORN AND TILDE + case 0xC3CE55: + return 0x1EEE; // CAPITAL LETTER U WITH HORN AND TILDE + case 0xC3CE6F: + return 0x1EE1; // SMALL LETTER O WITH HORN AND TILDE + case 0xC3CE75: + return 0x1EEF; // SMALL LETTER U WITH HORN AND TILDE + + case 0xC4C44F: + return 0x022C; // CAPITAL LETTER O WITH TILDE AND MACRON + case 0xC4C741: + return 0x01E0; // CAPITAL LETTER A WITH DOT ABOVE AND MACRON + case 0xC4C74F: + return 0x0230; // CAPITAL LETTER O WITH DOT ABOVE AND MACRON + case 0xC4C761: + return 0x01E1; // SMALL LETTER A WITH DOT ABOVE AND MACRON + case 0xC4C76F: + return 0x0231; // SMALL LETTER O WITH DOT ABOVE AND MACRON + case 0xC4C841: + return 0x01DE; // CAPITAL LETTER A WITH DIAERESIS AND MACRON + case 0xC4C84F: + return 0x022A; // CAPITAL LETTER O WITH DIAERESIS AND MACRON + case 0xC4C855: + return 0x01D5; // Capital Letter U with Diaeresis and Macron + case 0xC4C861: + return 0x01DF; // Small LETTER A WITH DIAERESIS AND MACRON + case 0xC4C875: + return 0x01D6; // Small Letter U with Diaeresis and Macron + case 0xC4D34F: + return 0x01EC; // CAPITAL LETTER O WITH OGONEK AND MACRON + case 0xC4D36F: + return 0x01ED; // SMALL LETTER O WITH OGONEK AND MACRON + case 0xC4C46F: + return 0x022D; // SMALL LETTER O WITH TILDE AND MACRON + case 0xC4D64C: + return 0x1E38; // CAPITAL LETTER L WITH DOT BELOW AND MACRON + case 0xC4D652: + return 0x1E5C; // CAPITAL LETTER R WITH DOT BELOW AND MACRON + case 0xC4D66C: + return 0x1E39; // Small LETTER L WITH DOT BELOW AND MACRON + case 0xC4D672: + return 0x1E5D; // SMALL LETTER R WITH DOT BELOW AND MACRON + case 0xCEC855: + return 0x01D9; // Capital Letter U with Diaeresis and CARON + case 0xC4C86F: + return 0x022B; // small LETTER O WITH DIAERESIS AND MACRON + + case 0xC5d045: + return 0x1E1C; // CAPITAL LETTER E WITH CEDILLA AND BREVE + case 0xC5d065: + return 0x1E1D; // Small LETTER E WITH CEDILLA AND BREVE + case 0xC5d641: + return 0x1EB6; // CAPITAL LETTER A WITH BREVE AND DOT BELOW + case 0xC5d661: + return 0x1EB7; // SMALL LETTER A WITH BREVE AND DOT BELOW + + case 0xC6C253: + return 0x1E64; // CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + case 0xC6C273: + return 0x1E65; // SMALL LETTER S WITH ACUTE AND DOT ABOVE + case 0xC6CF53: + return 0x1E66; // CAPITAL LETTER S WITH CARON AND DOT ABOVE + case 0xC6CF73: + return 0x1E67; // SMALL LETTER S WITH CARON AND DOT ABOVE + case 0xC6D653: + return 0x1E68; // CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + case 0xC6D673: + return 0x1E69; // SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + + case 0xC7C44F: + return 0x1E4E; // CAPITAL LETTER O WITH TILDE AND DIAERESIS + case 0xC7C46F: + return 0x1E4F; // SMALL LETTER O WITH TILDE AND DIAERESIS + case 0xC7C555: + return 0x1E7A; // CAPITAL LETTER U WITH MACRON AND DIAERESIS + case 0xC7C575: + return 0x1E7B; // SMALL LETTER U WITH MACRON AND DIAERESIS + + case 0xCEC875: + return 0x01DA; // Small Letter U with Diaeresis and CARON + + case 0xD5CE4F: + return 0x1EE2; // CAPITAL LETTER O WITH HORN AND DOT BELOW + case 0xD5CE55: + return 0x1EF0; // CAPITAL LETTER U WITH HORN AND DOT BELOW + case 0xD5CE6F: + return 0x1EE3; // SMALL LETTER O WITH HORN AND DOT BELOW + case 0xD5CE75: + return 0x1EF1; // SMALL LETTER U WITH HORN AND DOT BELOW + default: - myDebug() << "no match for " << c; + myDebug() << "no match for" << Qt::hex << c; return QChar(); } }