[misc.roundTools] New module; move otRound() here
Code relying on old place (fixedTools.otRound) still works.
This commit is contained in:
parent
ed77aeaebf
commit
abc1ba07a4
@ -1,7 +1,7 @@
|
||||
"""Helpers for manipulating 2D points and vectors in COLR table."""
|
||||
|
||||
from math import copysign, cos, hypot, pi
|
||||
from fontTools.misc.fixedTools import otRound
|
||||
from fontTools.misc.roundTools import otRound
|
||||
|
||||
|
||||
def _vector_between(origin, target):
|
||||
|
@ -22,7 +22,7 @@ from fontTools.ttLib.tables.otConverters import (
|
||||
IntValue,
|
||||
FloatValue,
|
||||
)
|
||||
from fontTools.misc.fixedTools import otRound
|
||||
from fontTools.misc.roundTools import otRound
|
||||
|
||||
|
||||
class BuildCallback(enum.Enum):
|
||||
|
@ -3,7 +3,7 @@ so on.
|
||||
"""
|
||||
|
||||
from fontTools.misc.py23 import *
|
||||
from fontTools.misc.fixedTools import otRound
|
||||
from fontTools.misc.roundTools import otRound
|
||||
from fontTools.misc.vector import Vector as _Vector
|
||||
import math
|
||||
import warnings
|
||||
|
@ -18,6 +18,7 @@ functions for converting between fixed-point, float and string representations.
|
||||
"""
|
||||
|
||||
from fontTools.misc.py23 import *
|
||||
from .roundTools import otRound
|
||||
import math
|
||||
import logging
|
||||
|
||||
@ -25,7 +26,6 @@ log = logging.getLogger(__name__)
|
||||
|
||||
__all__ = [
|
||||
"MAX_F2DOT14",
|
||||
"otRound",
|
||||
"fixedToFloat",
|
||||
"floatToFixed",
|
||||
"floatToFixedToFloat",
|
||||
@ -41,30 +41,6 @@ __all__ = [
|
||||
MAX_F2DOT14 = 0x7FFF / (1 << 14)
|
||||
|
||||
|
||||
def otRound(value):
|
||||
"""Round float value to nearest integer towards ``+Infinity``.
|
||||
|
||||
The OpenType spec (in the section on `"normalization" of OpenType Font Variations <https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview#coordinate-scales-and-normalization>`_)
|
||||
defines the required method for converting floating point values to
|
||||
fixed-point. In particular it specifies the following rounding strategy:
|
||||
|
||||
for fractional values of 0.5 and higher, take the next higher integer;
|
||||
for other fractional values, truncate.
|
||||
|
||||
This function rounds the floating-point value according to this strategy
|
||||
in preparation for conversion to fixed-point.
|
||||
|
||||
Args:
|
||||
value (float): The input floating-point value.
|
||||
|
||||
Returns
|
||||
float: The rounded value.
|
||||
"""
|
||||
# See this thread for how we ended up with this implementation:
|
||||
# https://github.com/fonttools/fonttools/issues/1248#issuecomment-383198166
|
||||
return int(math.floor(value + 0.5))
|
||||
|
||||
|
||||
def fixedToFloat(value, precisionBits):
|
||||
"""Converts a fixed-point number to a float given the number of
|
||||
precision bits.
|
||||
|
36
Lib/fontTools/misc/roundTools.py
Normal file
36
Lib/fontTools/misc/roundTools.py
Normal file
@ -0,0 +1,36 @@
|
||||
"""
|
||||
Various round-to-integer helpers.
|
||||
"""
|
||||
|
||||
import math
|
||||
import logging
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
__all__ = [
|
||||
"otRound",
|
||||
]
|
||||
|
||||
def otRound(value):
|
||||
"""Round float value to nearest integer towards ``+Infinity``.
|
||||
|
||||
The OpenType spec (in the section on `"normalization" of OpenType Font Variations <https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview#coordinate-scales-and-normalization>`_)
|
||||
defines the required method for converting floating point values to
|
||||
fixed-point. In particular it specifies the following rounding strategy:
|
||||
|
||||
for fractional values of 0.5 and higher, take the next higher integer;
|
||||
for other fractional values, truncate.
|
||||
|
||||
This function rounds the floating-point value according to this strategy
|
||||
in preparation for conversion to fixed-point.
|
||||
|
||||
Args:
|
||||
value (float): The input floating-point value.
|
||||
|
||||
Returns
|
||||
float: The rounded value.
|
||||
"""
|
||||
# See this thread for how we ended up with this implementation:
|
||||
# https://github.com/fonttools/fonttools/issues/1248#issuecomment-383198166
|
||||
return int(math.floor(value + 0.5))
|
||||
|
@ -1,4 +1,4 @@
|
||||
from fontTools.misc.fixedTools import otRound
|
||||
from fontTools.misc.roundTools import otRound
|
||||
from fontTools.misc.transform import Transform
|
||||
from fontTools.pens.filterPen import FilterPen, FilterPointPen
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Copyright (c) 2009 Type Supply LLC
|
||||
# Author: Tal Leming
|
||||
|
||||
from fontTools.misc.fixedTools import otRound
|
||||
from fontTools.misc.roundTools import otRound
|
||||
from fontTools.misc.psCharStrings import T2CharString
|
||||
from fontTools.pens.basePen import BasePen
|
||||
from fontTools.cffLib.specializer import specializeCommands, commandsToProgram
|
||||
|
@ -1,5 +1,6 @@
|
||||
from array import array
|
||||
from fontTools.misc.fixedTools import MAX_F2DOT14, otRound, floatToFixedToFloat
|
||||
from fontTools.misc.roundTools import otRound
|
||||
from fontTools.pens.basePen import LoggingPen
|
||||
from fontTools.pens.transformPen import TransformPen
|
||||
from fontTools.ttLib.tables import ttProgram
|
||||
|
@ -2,7 +2,7 @@
|
||||
#
|
||||
# Google Author(s): Behdad Esfahbod
|
||||
|
||||
from fontTools.misc.fixedTools import otRound
|
||||
from fontTools.misc.roundTools import otRound
|
||||
from fontTools import ttLib
|
||||
from fontTools.ttLib.tables import otTables
|
||||
from fontTools.otlLib.maxContextCalc import maxCtxFont
|
||||
|
@ -1,7 +1,7 @@
|
||||
from fontTools.misc import psCharStrings
|
||||
from fontTools import ttLib
|
||||
from fontTools.pens.basePen import NullPen
|
||||
from fontTools.misc.fixedTools import otRound
|
||||
from fontTools.misc.roundTools import otRound
|
||||
from fontTools.varLib.varStore import VarStoreInstancer
|
||||
|
||||
def _add_method(*clazzes):
|
||||
|
@ -1,5 +1,5 @@
|
||||
from fontTools.misc.py23 import *
|
||||
from fontTools.misc.fixedTools import otRound
|
||||
from fontTools.misc.roundTools import otRound
|
||||
from fontTools import ttLib
|
||||
from fontTools.misc.textTools import safeEval
|
||||
from . import DefaultTable
|
||||
|
@ -9,7 +9,7 @@ from enum import IntEnum
|
||||
import itertools
|
||||
from collections import namedtuple
|
||||
from fontTools.misc.py23 import *
|
||||
from fontTools.misc.fixedTools import otRound
|
||||
from fontTools.misc.roundTools import otRound
|
||||
from fontTools.misc.textTools import pad, safeEval
|
||||
from .otBase import (
|
||||
BaseTable, FormatSwitchingBaseTable, ValueRecord, CountReference,
|
||||
|
@ -3,8 +3,8 @@ Merge OpenType Layout tables (GDEF / GPOS / GSUB).
|
||||
"""
|
||||
import copy
|
||||
from operator import ior
|
||||
from fontTools.misc.fixedTools import otRound
|
||||
from fontTools.misc import classifyTools
|
||||
from fontTools.misc.roundTools import otRound
|
||||
from fontTools.ttLib.tables import otTables as ot
|
||||
from fontTools.ttLib.tables import otBase as otBase
|
||||
from fontTools.ttLib.tables.DefaultTable import DefaultTable
|
||||
|
@ -3,7 +3,8 @@ Instantiate a variation font. Run, eg:
|
||||
|
||||
$ fonttools varLib.mutator ./NotoSansArabic-VF.ttf wght=140 wdth=85
|
||||
"""
|
||||
from fontTools.misc.fixedTools import floatToFixedToFloat, otRound, floatToFixed
|
||||
from fontTools.misc.fixedTools import floatToFixedToFloat, floatToFixed
|
||||
from fontTools.misc.roundTools import otRound
|
||||
from fontTools.pens.boundsPen import BoundsPen
|
||||
from fontTools.ttLib import TTFont, newTable
|
||||
from fontTools.ttLib.tables import ttProgram
|
||||
|
Loading…
x
Reference in New Issue
Block a user