aboutsummaryrefslogtreecommitdiffstats
path: root/libtests
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-01-11 21:06:17 +0100
committerJay Berkenbilt <jberkenbilt@users.noreply.github.com>2022-01-11 21:55:19 +0100
commit370710657a7e7c771668107d1b6407fc350a2891 (patch)
treefe258f61196f155b67d3fcd193d0dd052c72a251 /libtests
parent77c31305fe1e9fde7ebf221fca94e7628cbf5a28 (diff)
downloadqpdf-370710657a7e7c771668107d1b6407fc350a2891.tar.zst
Add missing characters from PDF doc encoding (fixes #606)
Diffstat (limited to 'libtests')
-rw-r--r--libtests/qtest/qutil/qutil.out3
-rw-r--r--libtests/qutil.cc17
2 files changed, 15 insertions, 5 deletions
diff --git a/libtests/qtest/qutil/qutil.out b/libtests/qtest/qutil/qutil.out
index 90f1fd16..bcb89def 100644
--- a/libtests/qtest/qutil/qutil.out
+++ b/libtests/qtest/qutil/qutil.out
@@ -69,6 +69,7 @@ HAGOOGAMAGOOGLE: 0
<c0>Does * have fingers?
---- transcoding
bidirectional pdf doc done
+bidirectional pdf doc low done
bidirectional win ansi done
bidirectional mac roman done
analysis done
@@ -85,6 +86,8 @@ alternatives
2: 83a9e99e
0: 717561636b
done alternatives
+w˘wˇwˆw˙w˝w˛w˚w˜w�w
+done low characters
---- whoami
quack1
quack2
diff --git a/libtests/qutil.cc b/libtests/qutil.cc
index 46eb840c..cd2b7796 100644
--- a/libtests/qutil.cc
+++ b/libtests/qutil.cc
@@ -308,12 +308,12 @@ void utf8_to_ascii_test()
void transcoding_test(std::string (*to_utf8)(std::string const&),
std::string (*from_utf8)(std::string const&, char),
- int last, std::string unknown)
+ int first, int last, std::string unknown)
{
std::string in(" ");
std::string out;
std::string back;
- for (int i = 128; i <= last; ++i)
+ for (int i = first; i <= last; ++i)
{
in.at(0) = static_cast<char>(static_cast<unsigned char>(i));
out = (*to_utf8)(in);
@@ -355,13 +355,16 @@ void print_alternatives(std::string const& str)
void transcoding_test()
{
transcoding_test(&QUtil::pdf_doc_to_utf8,
- &QUtil::utf8_to_pdf_doc, 160, "\x9f");
+ &QUtil::utf8_to_pdf_doc, 127, 160, "\x9f");
std::cout << "bidirectional pdf doc done" << std::endl;
+ transcoding_test(&QUtil::pdf_doc_to_utf8,
+ &QUtil::utf8_to_pdf_doc, 24, 31, "?");
+ std::cout << "bidirectional pdf doc low done" << std::endl;
transcoding_test(&QUtil::win_ansi_to_utf8,
- &QUtil::utf8_to_win_ansi, 160, "?");
+ &QUtil::utf8_to_win_ansi, 128, 160, "?");
std::cout << "bidirectional win ansi done" << std::endl;
transcoding_test(&QUtil::mac_roman_to_utf8,
- &QUtil::utf8_to_mac_roman, 255, "?");
+ &QUtil::utf8_to_mac_roman, 128, 255, "?");
std::cout << "bidirectional mac roman done" << std::endl;
check_analyze("pi = \317\200", true, true, false);
check_analyze("pi != \317", true, false, false);
@@ -396,6 +399,10 @@ void transcoding_test()
print_alternatives(utf8);
print_alternatives("quack");
std::cout << "done alternatives" << std::endl;
+ std::string low = QUtil::pdf_doc_to_utf8(
+ "w\030w\031w\032w\033w\034w\035w\036w\037w\177w");
+ std::cout << low << std::endl;
+ std::cout << "done low characters" << std::endl;
}
void print_whoami(char const* str)