Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
dart_pdf
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
David PHAM-VAN
2020-12-12 08:06:02 -0400
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
e08669aec8629d7337c5117822353b29330d3f11
e08669ae
1 parent
5df73fe1
Remove dependency to the deprecated utf library
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
51 additions
and
5 deletions
pdf/CHANGELOG.md
pdf/lib/src/data_types.dart
pdf/lib/src/ttf_parser.dart
pdf/pubspec.yaml
pdf/CHANGELOG.md
View file @
e08669a
...
...
@@ -16,6 +16,7 @@
-
Improve gradient functions
-
Add blend mode
-
Add soft mask
-
Remove dependency to the deprecated utf library
## 1.12.0
...
...
pdf/lib/src/data_types.dart
View file @
e08669a
...
...
@@ -18,7 +18,6 @@ import 'dart:convert';
import
'dart:typed_data'
;
import
'package:meta/meta.dart'
;
import
'package:utf/utf.dart'
;
import
'color.dart'
;
import
'object.dart'
;
...
...
@@ -120,7 +119,7 @@ class PdfString extends PdfDataType {
try
{
return
latin1
.
encode
(
value
);
}
catch
(
e
)
{
return
Uint8List
.
fromList
(<
int
>[
0xfe
,
0xff
]
+
encodeUtf16be
(
value
));
return
Uint8List
.
fromList
(<
int
>[
0xfe
,
0xff
]
+
_
encodeUtf16be
(
value
));
}
}
...
...
@@ -135,6 +134,46 @@ class PdfString extends PdfDataType {
return
_string
(
'D:
$year$month$day$hour$minute${second}
Z'
);
}
/// Produce a list of UTF-16BE encoded bytes.
static
List
<
int
>
_encodeUtf16be
(
String
str
)
{
const
UNICODE_REPLACEMENT_CHARACTER_CODEPOINT
=
0xfffd
;
const
UNICODE_BYTE_ZERO_MASK
=
0xff
;
const
UNICODE_BYTE_ONE_MASK
=
0xff00
;
const
UNICODE_VALID_RANGE_MAX
=
0x10ffff
;
const
UNICODE_PLANE_ONE_MAX
=
0xffff
;
const
UNICODE_UTF16_RESERVED_LO
=
0xd800
;
const
UNICODE_UTF16_RESERVED_HI
=
0xdfff
;
const
UNICODE_UTF16_OFFSET
=
0x10000
;
const
UNICODE_UTF16_SURROGATE_UNIT_0_BASE
=
0xd800
;
const
UNICODE_UTF16_SURROGATE_UNIT_1_BASE
=
0xdc00
;
const
UNICODE_UTF16_HI_MASK
=
0xffc00
;
const
UNICODE_UTF16_LO_MASK
=
0x3ff
;
final
encoding
=
<
int
>[];
final
add
=
(
int
unit
)
{
encoding
.
add
((
unit
&
UNICODE_BYTE_ONE_MASK
)
>>
8
);
encoding
.
add
(
unit
&
UNICODE_BYTE_ZERO_MASK
);
};
for
(
var
unit
in
str
.
codeUnits
)
{
if
((
unit
>=
0
&&
unit
<
UNICODE_UTF16_RESERVED_LO
)
||
(
unit
>
UNICODE_UTF16_RESERVED_HI
&&
unit
<=
UNICODE_PLANE_ONE_MAX
))
{
add
(
unit
);
}
else
if
(
unit
>
UNICODE_PLANE_ONE_MAX
&&
unit
<=
UNICODE_VALID_RANGE_MAX
)
{
final
base
=
unit
-
UNICODE_UTF16_OFFSET
;
add
(
UNICODE_UTF16_SURROGATE_UNIT_0_BASE
+
((
base
&
UNICODE_UTF16_HI_MASK
)
>>
10
));
add
(
UNICODE_UTF16_SURROGATE_UNIT_1_BASE
+
(
base
&
UNICODE_UTF16_LO_MASK
));
}
else
{
add
(
UNICODE_REPLACEMENT_CHARACTER_CODEPOINT
);
}
}
return
encoding
;
}
/// Escape special characters
/// \ddd Character code ddd (octal)
void
_putTextBytes
(
PdfStream
s
,
List
<
int
>
b
)
{
...
...
pdf/lib/src/ttf_parser.dart
View file @
e08669a
...
...
@@ -19,7 +19,6 @@ import 'dart:math' as math;
import
'dart:typed_data'
;
import
'package:meta/meta.dart'
;
import
'package:utf/utf.dart'
;
import
'font_metrics.dart'
;
...
...
@@ -125,7 +124,7 @@ class TtfParser {
}
if
(
platformID
==
3
&&
nameID
==
6
)
{
try
{
_fontName
=
decodeUtf16
(
bytes
.
buffer
_fontName
=
_
decodeUtf16
(
bytes
.
buffer
.
asUint8List
(
basePosition
+
stringOffset
+
offset
,
length
));
return
;
}
catch
(
a
)
{
...
...
@@ -403,4 +402,12 @@ class TtfParser {
components
,
);
}
String
_decodeUtf16
(
Uint8List
bytes
)
{
final
charCodes
=
<
int
>[];
for
(
var
i
=
0
;
i
<
bytes
.
length
;
i
+=
2
)
{
charCodes
.
add
((
bytes
[
i
]
<<
8
)
|
bytes
[
i
+
1
]);
}
return
String
.
fromCharCodes
(
charCodes
);
}
}
...
...
pdf/pubspec.yaml
View file @
e08669a
...
...
@@ -16,7 +16,6 @@ dependencies:
image
:
^2.1.10
meta
:
^1.1.5
path_parsing
:
^0.1.4
utf
:
^0.9.0
vector_math
:
^2.0.0
dev_dependencies
:
...
...
Please
register
or
login
to post a comment