当前位置: 首页 > 工具软件 > Handedness > 使用案例 >

xfa spec: handedness, border, fill, margin for widgets(line, arc, rectangle, etc)

龙亮
2023-12-01

line, arc, rectangle, border格式化属性:handedness, border, fill。

nominal extent:

model object所占的空间用nominal extent来表示。
我的理解:名义边界。一个object总有一个名义上的边界。这个名义边界的逻辑上的宽度是1。也就是说,

名义边界并不定义边界宽度。相反,边界宽度是定义在名义边界基础上的。按照下面提到的handedness不

同定义,边界宽度可能定义在nominal extent的左侧,右侧,或者同时向左右两侧方向。按照我的理解,

nominal extent应该就是定义extent的逻辑值。

handedness:
handedness本意是指"用左手或者右手的写作习惯", 这里指定义stroke宽度的方式。
首先,理解什么是stroke(笔划)。许多XFA elements,比如lines, rectangles, borders,都是由一到

多个stroke组成的。stroke就是组成这写xfa element得一笔。
其次,理解stroke?stroke有一个初始点,(orginal point),有一个方向,以及长度,同时还有沿着这

个方向的宽度。
handedness定义的就是宽度得定义标准。是向左,向两边,还是向右扩展宽度。
left handed: 向vector左边扩展宽度。
even handed: 向vector两边扩展宽度。
right handed: 向vector右边扩展宽度。
xfa spec, page34对此有详细的描述。
<draw x="1in" y="1in" w="0.6in" h="0.8in">
 <value>
  <line hand="left" slope="/">
  <edge thickness="0.2in"/>
  </line>
 </value>
</draw>
对于border, rectangle对象,是从左上角开始,沿着顺时针方向,画成的。因此,对于border,相应的也

有三种handedness可能。分别是宽度向左,向两边,向右扩展。
两个邻接element得边界重合问题:
若两个邻接element都是even-handed类型,那么邻接的线条将显得完全重合,变成和其他边完全一样的宽

度。若两个邻接element不是even-handed,那么邻接的线条不会重合,将成为其他边2倍的宽度。


border:
为了在content周围显示rectangle, box model提供了独立的控件border。
border有自己的margins,独立于content的margins。??
border组成:
edges: border的边,每个边即是一个edge。
corners: intersections of edges。


fill:
所有封闭的图形都可以被filled(填充)。所谓封闭图形,包括box model border,还有一些content

element,比如rectangle, arc。fill element用来定义该封闭图形被怎样填充。fill的类型包括:
● None      不填充                   
● Solid     完全填充
● Hatching and cross hatching     阴影填充
● Stippling of two colors         点画填充
● Gradient fills:                 径向填充
❚ Linear
❚ Radial 

Margins and Borders of Widgets
除了button之外的所有widget,都有除了container提供的margins, borders之外的自身的margin和border

。当一个text widget有margin却没有定义margin值时候,margin依据border的定义确定自己的值。Text

widgets包括data, time, date-time, choice list, numeric edit, password edit, text edit,

signature edit。对于这些控件,当没有border定义时候,默认的margin值就是0。 当有border定义时候

,默认的margin值就是两倍的border宽度,并且在top margin上还要加上default font的长度。对于其他

控件,无论是否有border定义,四面margin总是为0.

 类似资料: