子に基づいて高さを計算するノードがレンダーツリーにあります。位置とサイズの値は浮動小数点値にすることができ、丸めはレンダリング時に行われます。
def compute_size(self):
# Invokes compute_size() of child nodes.
super(InlineBoxNode, self).compute_size()
# Iterate over all children and compute the current nodes
# height.
self.h = 0
for node in self.children:
self.h += node.h
私が直面している問題は次のとおりです。2つのノードが上記のコードのノードの子であると想像してください。両方の子の身長は10.5
です。子ノードは、それぞれの前のノードの下に配置されます。つまり、ノード2はに配置されy=10.5
ます。レンダリング時に。に10.5
なり11
ます。2番目のノードはにy=11
あり、にありますh=11
。つまり、下端はにあり22
、ではありません21
。(デモについては下の画像を参照してください)
この問題は、常にフロアを丸めることで(つまり、隣接する整数値の低い方に)解決できると思いますが、セマンティクスは正しいでしょうか?
編集
床を丸めても解決しないことに気づきました。2番目のノードの下端はになりまし20
た21
が、正しいはずです。