summaryrefslogtreecommitdiffstats
path: root/tests/reference/ufo/psfsetassocfeat.ufo
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-03-02 20:01:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-03-02 20:01:10 +0000
commitda875fcb62c801b8d19b3d4d984ad963574fb356 (patch)
tree3d85503747c56c2a387b291524442946f4bebb73 /tests/reference/ufo/psfsetassocfeat.ufo
parentInitial commit. (diff)
downloadpysilfont-upstream.tar.xz
pysilfont-upstream.zip
Adding upstream version 1.6.0.upstream/1.6.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/fontinfo.plist243
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_mpersand.glif61
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_pos.glif17
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_sterisk.glif51
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_tS_gn.glif104
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ircumA_ccent.glif17
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_olon.glif35
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombA_cute.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombC_ircum.glif17
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombD_iaer.glif36
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombG_rave.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombR_ingA_bv.glif36
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombT_ilde.glif36
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_omma.glif24
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitE_ight.glif63
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitF_ive.glif44
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitF_our.glif27
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitN_ine.glif49
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitO_ne.glif22
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitS_even.glif25
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitS_ix.glif49
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitT_hree.glif52
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitT_wo.glif37
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitZ_ero.glif49
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_ollarS_gn.glif53
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_ottedC_irc.glif235
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/E_qS_gn.glif19
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/E_xclamationM_rk.glif31
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/F_ullS_top.glif21
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/G_T_S_gn.glif16
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/G_raveA_ccent.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphen.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphenM_inus.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphen_S_oft.glif9
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_T_S_gn.glif16
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftC_urlyB_rac.glif50
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftP_aren.glif29
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftS_qrB_rac.glif17
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_owL_ine.glif13
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apA_.glif38
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apA_D_iaer.glif13
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apB_.glif62
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apC_.glif38
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apD_.glif51
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apE_.glif35
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apF_.glif30
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apG_.glif48
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apH_.glif36
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apI_.glif26
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apJ_.glif30
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apK_.glif35
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apL_.glif28
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apM_.glif36
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apN_.glif37
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apO_.glif40
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apP_.glif50
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apQ_.glif52
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apR_.glif55
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apS_.glif50
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apT_.glif32
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apU_.glif50
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apV_.glif26
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apW_.glif44
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apX_.glif39
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apY_.glif39
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_.glif77
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_A_cute.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_C_ircum.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_D_iaer.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_G_rave.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_R_ingA_bv.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_T_ilde.glif14
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mB_.glif55
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mC_.glif39
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mD_.glif65
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mE_.glif52
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mF_.glif44
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mG_.glif100
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mH_.glif54
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mI_.glif50
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mJ_.glif45
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mK_.glif50
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mL_.glif35
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mM_.glif80
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mN_.glif57
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mO_.glif40
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mP_.glif66
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mQ_.glif54
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mR_.glif42
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mS_.glif50
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mT_.glif45
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mU_.glif57
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mV_.glif34
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mW_.glif50
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mX_.glif40
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mY_.glif45
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/N_onB_reakingH_yphen.glif9
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/N_umS_gn.glif31
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/P_ercentS_gn.glif93
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/P_lusS_gn.glif19
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/Q_stnM_rk.glif49
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/Q_uotM_rk.glif27
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_everseS_olidus.glif13
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tC_urlyB_rac.glif50
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tP_aren.glif29
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tS_qrB_rac.glif17
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_emicolon.glif38
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_olidus.glif13
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_pace.glif6
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/T_ilde.glif29
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/V_ertL_ine.glif13
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/_notdef.glif18
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/_null.glif4
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/contents.plist232
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/glyphs/nonmarkingreturn.glif5
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/layercontents.plist10
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/lib.plist538
-rw-r--r--tests/reference/ufo/psfsetassocfeat.ufo/metainfo.plist10
118 files changed, 5356 insertions, 0 deletions
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/fontinfo.plist b/tests/reference/ufo/psfsetassocfeat.ufo/fontinfo.plist
new file mode 100644
index 0000000..52c03d6
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/fontinfo.plist
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ascender</key>
+ <integer>2100</integer>
+ <key>capHeight</key>
+ <real>1485.3</real>
+ <key>copyright</key>
+ <string>Copyright (c) 2004-2021 SIL International</string>
+ <key>descender</key>
+ <integer>-550</integer>
+ <key>familyName</key>
+ <string>Psf Test</string>
+ <key>italicAngle</key>
+ <integer>-14</integer>
+ <key>openTypeHeadCreated</key>
+ <string>2021/01/29 10:05:06</string>
+ <key>openTypeHheaAscender</key>
+ <integer>2100</integer>
+ <key>openTypeHheaDescender</key>
+ <integer>-550</integer>
+ <key>openTypeHheaLineGap</key>
+ <integer>0</integer>
+ <key>openTypeNameDescription</key>
+ <string>Copyright (c) 2004-2021 SIL International</string>
+ <key>openTypeNameDesigner</key>
+ <string>Victor Gaultney, Annie Olsen, Julie Remington, Don Collingsworth, Eric Hays, Becca Hirsbrunner</string>
+ <key>openTypeNameDesignerURL</key>
+ <string>http://scripts.sil.org/</string>
+ <key>openTypeNameLicense</key>
+ <string>Copyright (c) 2004-2021 SIL International (http://www.sil.org/) with Reserved Font Names "Andika" and "SIL".
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION &amp; CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.</string>
+ <key>openTypeNameLicenseURL</key>
+ <string>http://scripts.sil.org/OFL</string>
+ <key>openTypeNameManufacturer</key>
+ <string>SIL International</string>
+ <key>openTypeNameManufacturerURL</key>
+ <string>http://scripts.sil.org</string>
+ <key>openTypeNamePreferredFamilyName</key>
+ <string>Psf Testing</string>
+ <key>openTypeNamePreferredSubfamilyName</key>
+ <string>Italic</string>
+ <key>openTypeNameUniqueID</key>
+ <string>SIL International: Psf Test Italic: 2022</string>
+ <key>openTypeNameVersion</key>
+ <string>Version 5.550</string>
+ <key>openTypeOS2CodePageRanges</key>
+ <array>
+ <integer>0</integer>
+ <integer>1</integer>
+ <integer>2</integer>
+ <integer>4</integer>
+ <integer>7</integer>
+ <integer>8</integer>
+ </array>
+ <key>openTypeOS2FamilyClass</key>
+ <array>
+ <integer>0</integer>
+ <integer>0</integer>
+ </array>
+ <key>openTypeOS2Panose</key>
+ <array>
+ <integer>2</integer>
+ <integer>0</integer>
+ <integer>0</integer>
+ <integer>0</integer>
+ <integer>0</integer>
+ <integer>0</integer>
+ <integer>0</integer>
+ <integer>0</integer>
+ <integer>0</integer>
+ <integer>0</integer>
+ </array>
+ <key>openTypeOS2StrikeoutPosition</key>
+ <integer>700</integer>
+ <key>openTypeOS2StrikeoutSize</key>
+ <integer>100</integer>
+ <key>openTypeOS2SubscriptXOffset</key>
+ <integer>0</integer>
+ <key>openTypeOS2SubscriptXSize</key>
+ <integer>1433</integer>
+ <key>openTypeOS2SubscriptYOffset</key>
+ <integer>286</integer>
+ <key>openTypeOS2SubscriptYSize</key>
+ <integer>1331</integer>
+ <key>openTypeOS2SuperscriptXOffset</key>
+ <integer>0</integer>
+ <key>openTypeOS2SuperscriptXSize</key>
+ <integer>1433</integer>
+ <key>openTypeOS2SuperscriptYOffset</key>
+ <integer>976</integer>
+ <key>openTypeOS2SuperscriptYSize</key>
+ <integer>1331</integer>
+ <key>openTypeOS2Type</key>
+ <array/>
+ <key>openTypeOS2TypoAscender</key>
+ <integer>2100</integer>
+ <key>openTypeOS2TypoDescender</key>
+ <integer>-550</integer>
+ <key>openTypeOS2TypoLineGap</key>
+ <integer>1</integer>
+ <key>openTypeOS2UnicodeRanges</key>
+ <array>
+ <integer>0</integer>
+ <integer>1</integer>
+ <integer>6</integer>
+ <integer>7</integer>
+ <integer>31</integer>
+ <integer>33</integer>
+ <integer>35</integer>
+ <integer>36</integer>
+ <integer>37</integer>
+ <integer>38</integer>
+ <integer>39</integer>
+ <integer>40</integer>
+ <integer>45</integer>
+ <integer>46</integer>
+ <integer>47</integer>
+ <integer>57</integer>
+ <integer>60</integer>
+ <integer>62</integer>
+ <integer>64</integer>
+ <integer>67</integer>
+ <integer>69</integer>
+ <integer>89</integer>
+ </array>
+ <key>openTypeOS2VendorID</key>
+ <string>SIL</string>
+ <key>openTypeOS2WeightClass</key>
+ <integer>400</integer>
+ <key>openTypeOS2WidthClass</key>
+ <integer>5</integer>
+ <key>openTypeOS2WinAscent</key>
+ <integer>2100</integer>
+ <key>openTypeOS2WinDescent</key>
+ <integer>550</integer>
+ <key>postscriptBlueValues</key>
+ <array>
+ <integer>-490</integer>
+ <integer>-490</integer>
+ <integer>-25</integer>
+ <integer>0</integer>
+ <integer>1020</integer>
+ <integer>1040</integer>
+ <integer>1455</integer>
+ <integer>1485</integer>
+ <integer>1600</integer>
+ <integer>1620</integer>
+ </array>
+ <key>postscriptFontName</key>
+ <string>PsfTest-Italic</string>
+ <key>postscriptFullName</key>
+ <string>Psf Test Italic</string>
+ <key>postscriptStemSnapH</key>
+ <array>
+ <integer>140</integer>
+ <integer>145</integer>
+ <integer>150</integer>
+ <integer>155</integer>
+ <integer>160</integer>
+ <integer>165</integer>
+ <integer>170</integer>
+ <integer>175</integer>
+ <integer>185</integer>
+ <integer>270</integer>
+ </array>
+ <key>postscriptStemSnapV</key>
+ <array>
+ <integer>165</integer>
+ <integer>180</integer>
+ <integer>185</integer>
+ <integer>190</integer>
+ <integer>195</integer>
+ <integer>200</integer>
+ <integer>205</integer>
+ <integer>270</integer>
+ </array>
+ <key>postscriptUnderlinePosition</key>
+ <integer>-110</integer>
+ <key>postscriptUnderlineThickness</key>
+ <integer>80</integer>
+ <key>styleMapFamilyName</key>
+ <string>Psf test</string>
+ <key>styleMapStyleName</key>
+ <string>italic</string>
+ <key>styleName</key>
+ <string>Italic</string>
+ <key>trademark</key>
+ <string>Andika is a trademark of SIL International.</string>
+ <key>unitsPerEm</key>
+ <integer>2048</integer>
+ <key>versionMajor</key>
+ <integer>5</integer>
+ <key>versionMinor</key>
+ <integer>550</integer>
+ <key>xHeight</key>
+ <integer>1040</integer>
+ <key>year</key>
+ <integer>2021</integer>
+</dict>
+</plist>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_mpersand.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_mpersand.glif
new file mode 100644
index 0000000..689cb3e
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_mpersand.glif
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Ampersand" format="2">
+ <advance width="1202"/>
+ <unicode hex="0026"/>
+ <outline>
+ <contour>
+ <point x="1054" y="559" type="line"/>
+ <point x="949" y="395"/>
+ <point x="616" y="147"/>
+ <point x="441" y="147" type="curve" smooth="yes"/>
+ <point x="318" y="147"/>
+ <point x="256" y="224"/>
+ <point x="256" y="314" type="curve" smooth="yes"/>
+ <point x="256" y="453"/>
+ <point x="369" y="575"/>
+ <point x="590" y="725" type="curve" smooth="yes"/>
+ <point x="836" y="892"/>
+ <point x="1022" y="1067"/>
+ <point x="1022" y="1223" type="curve" smooth="yes"/>
+ <point x="1022" y="1363"/>
+ <point x="894" y="1455"/>
+ <point x="762" y="1455" type="curve" smooth="yes"/>
+ <point x="504" y="1455"/>
+ <point x="378" y="1328"/>
+ <point x="378" y="1114" type="curve" smooth="yes"/>
+ <point x="378" y="953"/>
+ <point x="514" y="771"/>
+ <point x="614" y="559" type="curve" smooth="yes"/>
+ <point x="783" y="198"/>
+ <point x="906" y="-25"/>
+ <point x="958" y="-25" type="curve" smooth="yes"/>
+ <point x="993" y="-25"/>
+ <point x="1087" y="37"/>
+ <point x="1132" y="69" type="curve"/>
+ <point x="1046" y="108"/>
+ <point x="926" y="291"/>
+ <point x="756" y="666" type="curve" smooth="yes"/>
+ <point x="665" y="866"/>
+ <point x="544" y="1029"/>
+ <point x="544" y="1149" type="curve" smooth="yes"/>
+ <point x="544" y="1252"/>
+ <point x="632" y="1323"/>
+ <point x="724" y="1323" type="curve" smooth="yes"/>
+ <point x="794" y="1323"/>
+ <point x="858" y="1266"/>
+ <point x="858" y="1193" type="curve" smooth="yes"/>
+ <point x="858" y="1107"/>
+ <point x="743" y="1004"/>
+ <point x="492" y="826" type="curve" smooth="yes"/>
+ <point x="182" y="606"/>
+ <point x="73" y="439"/>
+ <point x="73" y="288" type="curve" smooth="yes"/>
+ <point x="73" y="113"/>
+ <point x="195" y="-25"/>
+ <point x="383" y="-25" type="curve" smooth="yes"/>
+ <point x="656" y="-25"/>
+ <point x="1009" y="269"/>
+ <point x="1126" y="426" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_pos.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_pos.glif
new file mode 100644
index 0000000..deb1650
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_pos.glif
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Apos" format="2">
+ <advance width="585"/>
+ <unicode hex="0027"/>
+ <outline>
+ <contour>
+ <point x="560" y="1024" type="line"/>
+ <point x="599" y="1162"/>
+ <point x="643" y="1312"/>
+ <point x="732" y="1553" type="curve"/>
+ <point x="527" y="1553" type="line"/>
+ <point x="498" y="1312"/>
+ <point x="465" y="1162"/>
+ <point x="435" y="1024" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_sterisk.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_sterisk.glif
new file mode 100644
index 0000000..3027a5d
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_sterisk.glif
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Asterisk" format="2">
+ <advance width="1008"/>
+ <unicode hex="002A"/>
+ <outline>
+ <contour>
+ <point x="745" y="1568" type="line"/>
+ <point x="733" y="1438"/>
+ <point x="725" y="1359"/>
+ <point x="707" y="1274" type="curve"/>
+ <point x="644" y="1317"/>
+ <point x="587" y="1359"/>
+ <point x="498" y="1436" type="curve"/>
+ <point x="392" y="1313" type="line"/>
+ <point x="505" y="1264"/>
+ <point x="575" y="1236"/>
+ <point x="643" y="1196" type="curve"/>
+ <point x="556" y="1153"/>
+ <point x="474" y="1117"/>
+ <point x="340" y="1063" type="curve"/>
+ <point x="379" y="941" type="line"/>
+ <point x="504" y="1021"/>
+ <point x="584" y="1072"/>
+ <point x="668" y="1117" type="curve"/>
+ <point x="645" y="1034"/>
+ <point x="619" y="954"/>
+ <point x="575" y="823" type="curve"/>
+ <point x="715" y="823" type="line"/>
+ <point x="727" y="954"/>
+ <point x="741" y="1031"/>
+ <point x="758" y="1117" type="curve"/>
+ <point x="821" y="1073"/>
+ <point x="878" y="1032"/>
+ <point x="968" y="956" type="curve"/>
+ <point x="1073" y="1078" type="line"/>
+ <point x="959" y="1126"/>
+ <point x="890" y="1155"/>
+ <point x="823" y="1196" type="curve"/>
+ <point x="909" y="1236"/>
+ <point x="990" y="1273"/>
+ <point x="1126" y="1328" type="curve"/>
+ <point x="1086" y="1450" type="line"/>
+ <point x="961" y="1368"/>
+ <point x="883" y="1321"/>
+ <point x="797" y="1274" type="curve"/>
+ <point x="819" y="1359"/>
+ <point x="845" y="1438"/>
+ <point x="890" y="1568" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_tS_gn.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_tS_gn.glif
new file mode 100644
index 0000000..2cd2542
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/A_tS_gn.glif
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="AtSgn" format="2">
+ <advance width="1682"/>
+ <unicode hex="0040"/>
+ <outline>
+ <contour>
+ <point x="1082" y="-10" type="line"/>
+ <point x="980" y="-69"/>
+ <point x="889" y="-93"/>
+ <point x="796" y="-93" type="curve" smooth="yes"/>
+ <point x="507" y="-93"/>
+ <point x="301" y="104"/>
+ <point x="301" y="414" type="curve" smooth="yes"/>
+ <point x="301" y="476"/>
+ <point x="309" y="543"/>
+ <point x="327" y="613" type="curve" smooth="yes"/>
+ <point x="425" y="1003"/>
+ <point x="782" y="1245"/>
+ <point x="1110" y="1245" type="curve" smooth="yes"/>
+ <point x="1433" y="1245"/>
+ <point x="1590" y="1060"/>
+ <point x="1590" y="813" type="curve" smooth="yes"/>
+ <point x="1590" y="760"/>
+ <point x="1582" y="705"/>
+ <point x="1568" y="647" type="curve" smooth="yes"/>
+ <point x="1510" y="413"/>
+ <point x="1365" y="309"/>
+ <point x="1297" y="309" type="curve" smooth="yes"/>
+ <point x="1261" y="309"/>
+ <point x="1238" y="344"/>
+ <point x="1238" y="420" type="curve" smooth="yes"/>
+ <point x="1238" y="468"/>
+ <point x="1247" y="533"/>
+ <point x="1268" y="617" type="curve" smooth="yes"/>
+ <point x="1354" y="960" type="line"/>
+ <point x="1276" y="995"/>
+ <point x="1155" y="1019"/>
+ <point x="1074" y="1019" type="curve" smooth="yes"/>
+ <point x="910" y="1019"/>
+ <point x="790" y="962"/>
+ <point x="673" y="828" type="curve" smooth="yes"/>
+ <point x="607" y="751"/>
+ <point x="554" y="650"/>
+ <point x="524" y="529" type="curve" smooth="yes"/>
+ <point x="514" y="488"/>
+ <point x="509" y="450"/>
+ <point x="509" y="416" type="curve" smooth="yes"/>
+ <point x="509" y="259"/>
+ <point x="609" y="179"/>
+ <point x="719" y="179" type="curve" smooth="yes"/>
+ <point x="836" y="179"/>
+ <point x="1017" y="359"/>
+ <point x="1099" y="480" type="curve"/>
+ <point x="1093" y="446"/>
+ <point x="1089" y="413"/>
+ <point x="1089" y="382" type="curve" smooth="yes"/>
+ <point x="1089" y="264"/>
+ <point x="1136" y="176"/>
+ <point x="1233" y="176" type="curve" smooth="yes"/>
+ <point x="1408" y="176"/>
+ <point x="1635" y="331"/>
+ <point x="1716" y="656" type="curve" smooth="yes"/>
+ <point x="1732" y="722"/>
+ <point x="1740" y="784"/>
+ <point x="1740" y="843" type="curve" smooth="yes"/>
+ <point x="1740" y="1161"/>
+ <point x="1513" y="1377"/>
+ <point x="1153" y="1377" type="curve" smooth="yes"/>
+ <point x="738" y="1377"/>
+ <point x="310" y="1143"/>
+ <point x="175" y="603" type="curve" smooth="yes"/>
+ <point x="155" y="522"/>
+ <point x="145" y="446"/>
+ <point x="145" y="375" type="curve" smooth="yes"/>
+ <point x="145" y="-5"/>
+ <point x="417" y="-230"/>
+ <point x="747" y="-230" type="curve" smooth="yes"/>
+ <point x="882" y="-230"/>
+ <point x="1044" y="-184"/>
+ <point x="1161" y="-116" type="curve"/>
+ </contour>
+ <contour>
+ <point x="1141" y="706" type="line"/>
+ <point x="1075" y="570"/>
+ <point x="856" y="314"/>
+ <point x="766" y="314" type="curve" smooth="yes"/>
+ <point x="712" y="314"/>
+ <point x="669" y="362"/>
+ <point x="669" y="459" type="curve" smooth="yes"/>
+ <point x="669" y="491"/>
+ <point x="674" y="530"/>
+ <point x="685" y="573" type="curve" smooth="yes"/>
+ <point x="704" y="649"/>
+ <point x="739" y="726"/>
+ <point x="780" y="774" type="curve" smooth="yes"/>
+ <point x="859" y="868"/>
+ <point x="943" y="887"/>
+ <point x="1011" y="887" type="curve" smooth="yes"/>
+ <point x="1085" y="887"/>
+ <point x="1148" y="868"/>
+ <point x="1177" y="853" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ircumA_ccent.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ircumA_ccent.glif
new file mode 100644
index 0000000..91ab811
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ircumA_ccent.glif
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="CircumAccent" format="2">
+ <advance width="830"/>
+ <unicode hex="005E"/>
+ <anchor x="705" y="1635" name="U"/>
+ <outline>
+ <contour>
+ <point x="316" y="1147" type="line"/>
+ <point x="660" y="1421" type="line"/>
+ <point x="866" y="1147" type="line"/>
+ <point x="1015" y="1147" type="line"/>
+ <point x="761" y="1568" type="line"/>
+ <point x="591" y="1568" type="line"/>
+ <point x="166" y="1147" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_olon.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_olon.glif
new file mode 100644
index 0000000..bcccfc2
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_olon.glif
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Colon" format="2">
+ <advance width="620"/>
+ <unicode hex="003A"/>
+ <outline>
+ <contour>
+ <point x="314" y="758" type="curve" smooth="yes"/>
+ <point x="314" y="696"/>
+ <point x="365" y="642"/>
+ <point x="430" y="642" type="curve" smooth="yes"/>
+ <point x="514" y="642"/>
+ <point x="590" y="712"/>
+ <point x="590" y="792" type="curve" smooth="yes"/>
+ <point x="590" y="854"/>
+ <point x="540" y="907"/>
+ <point x="476" y="907" type="curve" smooth="yes"/>
+ <point x="393" y="907"/>
+ <point x="314" y="837"/>
+ </contour>
+ <contour>
+ <point x="148" y="90" type="curve" smooth="yes"/>
+ <point x="148" y="28"/>
+ <point x="198" y="-25"/>
+ <point x="263" y="-25" type="curve" smooth="yes"/>
+ <point x="347" y="-25"/>
+ <point x="424" y="45"/>
+ <point x="424" y="125" type="curve" smooth="yes"/>
+ <point x="424" y="186"/>
+ <point x="374" y="240"/>
+ <point x="309" y="240" type="curve" smooth="yes"/>
+ <point x="225" y="240"/>
+ <point x="148" y="170"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombA_cute.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombA_cute.glif
new file mode 100644
index 0000000..a7607fe
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombA_cute.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="CombAcute" format="2">
+ <unicode hex="0301"/>
+ <anchor x="-221" y="1635" name="U"/>
+ <anchor x="-355" y="1100" name="_U"/>
+ <outline>
+ <contour>
+ <point x="-99" y="1568" type="line"/>
+ <point x="-524" y="1147" type="line"/>
+ <point x="-354" y="1147" type="line"/>
+ <point x="150" y="1568" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombC_ircum.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombC_ircum.glif
new file mode 100644
index 0000000..6614f85
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombC_ircum.glif
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="CombCircum" format="2">
+ <unicode hex="0302"/>
+ <anchor x="-221" y="1635" name="U"/>
+ <anchor x="-320" y="1100" name="_U"/>
+ <outline>
+ <contour>
+ <point x="-619" y="1147" type="line"/>
+ <point x="-275" y="1421" type="line"/>
+ <point x="-69" y="1147" type="line"/>
+ <point x="80" y="1147" type="line"/>
+ <point x="-174" y="1568" type="line"/>
+ <point x="-344" y="1568" type="line"/>
+ <point x="-769" y="1147" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombD_iaer.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombD_iaer.glif
new file mode 100644
index 0000000..d6b35b7
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombD_iaer.glif
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="CombDiaer" format="2">
+ <unicode hex="0308"/>
+ <anchor x="-253" y="1505" name="U"/>
+ <anchor x="-350" y="1100" name="_U"/>
+ <outline>
+ <contour>
+ <point x="39" y="1338" type="curve" smooth="yes"/>
+ <point x="39" y="1399"/>
+ <point x="-7" y="1450"/>
+ <point x="-72" y="1450" type="curve" smooth="yes"/>
+ <point x="-167" y="1450"/>
+ <point x="-229" y="1372"/>
+ <point x="-229" y="1299" type="curve" smooth="yes"/>
+ <point x="-229" y="1238"/>
+ <point x="-182" y="1186"/>
+ <point x="-118" y="1186" type="curve" smooth="yes"/>
+ <point x="-33" y="1186"/>
+ <point x="39" y="1259"/>
+ </contour>
+ <contour>
+ <point x="-381" y="1338" type="curve" smooth="yes"/>
+ <point x="-381" y="1399"/>
+ <point x="-427" y="1450"/>
+ <point x="-492" y="1450" type="curve" smooth="yes"/>
+ <point x="-587" y="1450"/>
+ <point x="-649" y="1372"/>
+ <point x="-649" y="1299" type="curve" smooth="yes"/>
+ <point x="-649" y="1238"/>
+ <point x="-602" y="1186"/>
+ <point x="-538" y="1186" type="curve" smooth="yes"/>
+ <point x="-453" y="1186"/>
+ <point x="-381" y="1259"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombG_rave.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombG_rave.glif
new file mode 100644
index 0000000..8869bb9
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombG_rave.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="CombGrave" format="2">
+ <unicode hex="0300"/>
+ <anchor x="-201" y="1635" name="U"/>
+ <anchor x="-335" y="1100" name="_U"/>
+ <outline>
+ <contour>
+ <point x="-619" y="1568" type="line"/>
+ <point x="-284" y="1147" type="line"/>
+ <point x="-134" y="1147" type="line"/>
+ <point x="-409" y="1568" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombR_ingA_bv.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombR_ingA_bv.glif
new file mode 100644
index 0000000..38232a0
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombR_ingA_bv.glif
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="CombRingAbv" format="2">
+ <unicode hex="030A"/>
+ <anchor x="-221" y="1635" name="U"/>
+ <anchor x="-385" y="1100" name="_U"/>
+ <outline>
+ <contour>
+ <point x="-377" y="1259" type="curve" smooth="yes"/>
+ <point x="-427" y="1259"/>
+ <point x="-456" y="1287"/>
+ <point x="-456" y="1329" type="curve" smooth="yes"/>
+ <point x="-456" y="1400"/>
+ <point x="-393" y="1455"/>
+ <point x="-328" y="1455" type="curve" smooth="yes"/>
+ <point x="-278" y="1455"/>
+ <point x="-248" y="1428"/>
+ <point x="-248" y="1385" type="curve" smooth="yes"/>
+ <point x="-248" y="1314"/>
+ <point x="-312" y="1259"/>
+ </contour>
+ <contour>
+ <point x="-573" y="1320" type="curve" smooth="yes"/>
+ <point x="-573" y="1224"/>
+ <point x="-498" y="1147"/>
+ <point x="-395" y="1147" type="curve" smooth="yes"/>
+ <point x="-257" y="1147"/>
+ <point x="-131" y="1263"/>
+ <point x="-131" y="1394" type="curve" smooth="yes"/>
+ <point x="-131" y="1491"/>
+ <point x="-206" y="1568"/>
+ <point x="-310" y="1568" type="curve" smooth="yes"/>
+ <point x="-448" y="1568"/>
+ <point x="-573" y="1451"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombT_ilde.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombT_ilde.glif
new file mode 100644
index 0000000..f79322e
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_ombT_ilde.glif
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="CombTilde" format="2">
+ <unicode hex="0303"/>
+ <anchor x="-290" y="1475" name="U"/>
+ <anchor x="-385" y="1100" name="_U"/>
+ <outline>
+ <contour>
+ <point x="-646" y="1181" type="line"/>
+ <point x="-629" y="1229"/>
+ <point x="-589" y="1269"/>
+ <point x="-540" y="1269" type="curve" smooth="yes"/>
+ <point x="-503" y="1269"/>
+ <point x="-466" y="1253"/>
+ <point x="-398" y="1218" type="curve" smooth="yes"/>
+ <point x="-344" y="1190"/>
+ <point x="-296" y="1171"/>
+ <point x="-243" y="1171" type="curve" smooth="yes"/>
+ <point x="-120" y="1171"/>
+ <point x="-15" y="1286"/>
+ <point x="16" y="1411" type="curve"/>
+ <point x="-89" y="1411" type="line"/>
+ <point x="-107" y="1366"/>
+ <point x="-147" y="1323"/>
+ <point x="-194" y="1323" type="curve" smooth="yes"/>
+ <point x="-236" y="1323"/>
+ <point x="-273" y="1342"/>
+ <point x="-338" y="1370" type="curve" smooth="yes"/>
+ <point x="-401" y="1397"/>
+ <point x="-442" y="1421"/>
+ <point x="-498" y="1421" type="curve" smooth="yes"/>
+ <point x="-617" y="1421"/>
+ <point x="-721" y="1300"/>
+ <point x="-751" y="1181" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_omma.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_omma.glif
new file mode 100644
index 0000000..eaff517
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/C_omma.glif
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Comma" format="2">
+ <advance width="630"/>
+ <unicode hex="002C"/>
+ <outline>
+ <contour>
+ <point x="137" y="49" type="line"/>
+ <point x="277" y="49" type="line"/>
+ <point x="252" y="-50"/>
+ <point x="145" y="-169"/>
+ <point x="73" y="-225" type="curve"/>
+ <point x="163" y="-265" type="line"/>
+ <point x="280" y="-175"/>
+ <point x="431" y="-28"/>
+ <point x="431" y="118" type="curve" smooth="yes"/>
+ <point x="431" y="193"/>
+ <point x="378" y="245"/>
+ <point x="311" y="245" type="curve" smooth="yes"/>
+ <point x="254" y="245"/>
+ <point x="190" y="209"/>
+ <point x="161" y="147" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitE_ight.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitE_ight.glif
new file mode 100644
index 0000000..262f860
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitE_ight.glif
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DigitEight" format="2">
+ <advance width="1180"/>
+ <unicode hex="0038"/>
+ <anchor x="515" y="-100" name="L"/>
+ <anchor x="922" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="542" y="-25" type="curve" smooth="yes"/>
+ <point x="839" y="-25"/>
+ <point x="1160" y="170"/>
+ <point x="1160" y="475" type="curve" smooth="yes"/>
+ <point x="1160" y="626"/>
+ <point x="1068" y="733"/>
+ <point x="988" y="779" type="curve"/>
+ <point x="1155" y="860"/>
+ <point x="1270" y="970"/>
+ <point x="1270" y="1151" type="curve" smooth="yes"/>
+ <point x="1270" y="1340"/>
+ <point x="1102" y="1455"/>
+ <point x="901" y="1455" type="curve" smooth="yes"/>
+ <point x="620" y="1455"/>
+ <point x="348" y="1292"/>
+ <point x="348" y="1018" type="curve" smooth="yes"/>
+ <point x="348" y="891"/>
+ <point x="427" y="814"/>
+ <point x="483" y="779" type="curve"/>
+ <point x="297" y="706"/>
+ <point x="115" y="549"/>
+ <point x="115" y="325" type="curve" smooth="yes"/>
+ <point x="115" y="111"/>
+ <point x="317" y="-25"/>
+ </contour>
+ <contour>
+ <point x="750" y="848" type="curve" smooth="yes"/>
+ <point x="628" y="848"/>
+ <point x="541" y="917"/>
+ <point x="541" y="1029" type="curve" smooth="yes"/>
+ <point x="541" y="1205"/>
+ <point x="704" y="1299"/>
+ <point x="862" y="1299" type="curve" smooth="yes"/>
+ <point x="985" y="1299"/>
+ <point x="1076" y="1235"/>
+ <point x="1076" y="1128" type="curve" smooth="yes"/>
+ <point x="1076" y="955"/>
+ <point x="907" y="848"/>
+ </contour>
+ <contour>
+ <point x="564" y="142" type="curve" smooth="yes"/>
+ <point x="413" y="142"/>
+ <point x="322" y="225"/>
+ <point x="322" y="350" type="curve" smooth="yes"/>
+ <point x="322" y="557"/>
+ <point x="520" y="696"/>
+ <point x="712" y="696" type="curve" smooth="yes"/>
+ <point x="864" y="696"/>
+ <point x="961" y="602"/>
+ <point x="961" y="476" type="curve" smooth="yes"/>
+ <point x="961" y="266"/>
+ <point x="753" y="142"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitF_ive.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitF_ive.glif
new file mode 100644
index 0000000..a224838
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitF_ive.glif
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DigitFive" format="2">
+ <advance width="1180"/>
+ <unicode hex="0035"/>
+ <anchor x="515" y="-100" name="L"/>
+ <anchor x="922" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1296" y="1431" type="line"/>
+ <point x="491" y="1431" type="line"/>
+ <point x="302" y="671" type="line"/>
+ <point x="438" y="718"/>
+ <point x="537" y="735"/>
+ <point x="643" y="735" type="curve" smooth="yes"/>
+ <point x="784" y="735"/>
+ <point x="933" y="660"/>
+ <point x="933" y="508" type="curve" smooth="yes"/>
+ <point x="933" y="273"/>
+ <point x="710" y="152"/>
+ <point x="497" y="152" type="curve" smooth="yes"/>
+ <point x="357" y="152"/>
+ <point x="263" y="195"/>
+ <point x="170" y="284" type="curve"/>
+ <point x="89" y="78" type="line"/>
+ <point x="195" y="2"/>
+ <point x="326" y="-25"/>
+ <point x="481" y="-25" type="curve" smooth="yes"/>
+ <point x="807" y="-25"/>
+ <point x="1129" y="190"/>
+ <point x="1129" y="546" type="curve" smooth="yes"/>
+ <point x="1129" y="757"/>
+ <point x="951" y="911"/>
+ <point x="702" y="911" type="curve" smooth="yes"/>
+ <point x="629" y="911"/>
+ <point x="576" y="906"/>
+ <point x="544" y="902" type="curve"/>
+ <point x="635" y="1264" type="line"/>
+ <point x="1020" y="1264" type="line" smooth="yes"/>
+ <point x="1104" y="1264"/>
+ <point x="1179" y="1260"/>
+ <point x="1250" y="1245" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitF_our.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitF_our.glif
new file mode 100644
index 0000000..eeccb48
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitF_our.glif
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DigitFour" format="2">
+ <advance width="1180"/>
+ <unicode hex="0034"/>
+ <anchor x="522" y="-100" name="L"/>
+ <anchor x="929" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1161" y="387" type="line"/>
+ <point x="1199" y="539" type="line"/>
+ <point x="1009" y="539" type="line"/>
+ <point x="1236" y="1450" type="line"/>
+ <point x="1026" y="1450" type="line"/>
+ <point x="144" y="539" type="line"/>
+ <point x="106" y="387" type="line"/>
+ <point x="781" y="387" type="line"/>
+ <point x="685" y="0" type="line"/>
+ <point x="875" y="0" type="line"/>
+ <point x="971" y="387" type="line"/>
+ </contour>
+ <contour>
+ <point x="985" y="1205" type="line"/>
+ <point x="819" y="539" type="line"/>
+ <point x="337" y="539" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitN_ine.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitN_ine.glif
new file mode 100644
index 0000000..191cd79
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitN_ine.glif
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DigitNine" format="2">
+ <advance width="1180"/>
+ <unicode hex="0039"/>
+ <anchor x="515" y="-100" name="L"/>
+ <anchor x="922" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="157" y="94" type="line"/>
+ <point x="208" y="29"/>
+ <point x="355" y="-25"/>
+ <point x="473" y="-25" type="curve" smooth="yes"/>
+ <point x="999" y="-25"/>
+ <point x="1267" y="520"/>
+ <point x="1267" y="982" type="curve" smooth="yes"/>
+ <point x="1267" y="1248"/>
+ <point x="1127" y="1455"/>
+ <point x="866" y="1455" type="curve" smooth="yes"/>
+ <point x="596" y="1455"/>
+ <point x="303" y="1269"/>
+ <point x="303" y="932" type="curve" smooth="yes"/>
+ <point x="303" y="761"/>
+ <point x="425" y="574"/>
+ <point x="661" y="574" type="curve" smooth="yes"/>
+ <point x="852" y="574"/>
+ <point x="1036" y="683"/>
+ <point x="1172" y="840" type="curve"/>
+ <point x="1121" y="922" type="line"/>
+ <point x="1019" y="810"/>
+ <point x="872" y="745"/>
+ <point x="717" y="745" type="curve" smooth="yes"/>
+ <point x="584" y="745"/>
+ <point x="498" y="833"/>
+ <point x="498" y="956" type="curve" smooth="yes"/>
+ <point x="498" y="1146"/>
+ <point x="638" y="1284"/>
+ <point x="821" y="1284" type="curve" smooth="yes"/>
+ <point x="998" y="1284"/>
+ <point x="1073" y="1119"/>
+ <point x="1073" y="956" type="curve" smooth="yes"/>
+ <point x="1073" y="455"/>
+ <point x="760" y="147"/>
+ <point x="496" y="147" type="curve" smooth="yes"/>
+ <point x="410" y="147"/>
+ <point x="298" y="209"/>
+ <point x="249" y="285" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitO_ne.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitO_ne.glif
new file mode 100644
index 0000000..a639774
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitO_ne.glif
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DigitOne" format="2">
+ <advance width="1180"/>
+ <unicode hex="0031"/>
+ <anchor x="515" y="-100" name="L"/>
+ <anchor x="922" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1021" y="167" type="line"/>
+ <point x="706" y="167" type="line"/>
+ <point x="1026" y="1450" type="line"/>
+ <point x="856" y="1450" type="line"/>
+ <point x="459" y="1243" type="line"/>
+ <point x="440" y="1066" type="line"/>
+ <point x="782" y="1235" type="line"/>
+ <point x="516" y="167" type="line"/>
+ <point x="201" y="167" type="line"/>
+ <point x="160" y="0" type="line"/>
+ <point x="980" y="0" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitS_even.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitS_even.glif
new file mode 100644
index 0000000..68c6ef6
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitS_even.glif
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DigitSeven" format="2">
+ <advance width="1180"/>
+ <unicode hex="0037"/>
+ <anchor x="515" y="-100" name="L"/>
+ <anchor x="922" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="420" y="0" type="line"/>
+ <point x="661" y="450"/>
+ <point x="972" y="877"/>
+ <point x="1367" y="1274" type="curve"/>
+ <point x="1406" y="1431" type="line"/>
+ <point x="386" y="1431" type="line"/>
+ <point x="341" y="1245" type="line"/>
+ <point x="421" y="1260"/>
+ <point x="538" y="1264"/>
+ <point x="726" y="1264" type="curve" smooth="yes"/>
+ <point x="1126" y="1264" type="line"/>
+ <point x="774" y="889"/>
+ <point x="517" y="555"/>
+ <point x="215" y="0" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitS_ix.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitS_ix.glif
new file mode 100644
index 0000000..b6be793
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitS_ix.glif
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DigitSix" format="2">
+ <advance width="1180"/>
+ <unicode hex="0036"/>
+ <anchor x="515" y="-100" name="L"/>
+ <anchor x="922" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1313" y="1347" type="line"/>
+ <point x="1248" y="1418"/>
+ <point x="1135" y="1455"/>
+ <point x="1017" y="1455" type="curve" smooth="yes"/>
+ <point x="481" y="1454"/>
+ <point x="208" y="915"/>
+ <point x="208" y="475" type="curve" smooth="yes"/>
+ <point x="208" y="167"/>
+ <point x="392" y="-25"/>
+ <point x="623" y="-25" type="curve" smooth="yes"/>
+ <point x="947" y="-25"/>
+ <point x="1183" y="169"/>
+ <point x="1183" y="517" type="curve" smooth="yes"/>
+ <point x="1183" y="709"/>
+ <point x="1029" y="887"/>
+ <point x="793" y="887" type="curve" smooth="yes"/>
+ <point x="636" y="887"/>
+ <point x="432" y="784"/>
+ <point x="317" y="633" type="curve"/>
+ <point x="364" y="559" type="line"/>
+ <point x="471" y="660"/>
+ <point x="596" y="716"/>
+ <point x="751" y="716" type="curve" smooth="yes"/>
+ <point x="898" y="716"/>
+ <point x="987" y="614"/>
+ <point x="987" y="454" type="curve" smooth="yes"/>
+ <point x="987" y="263"/>
+ <point x="816" y="147"/>
+ <point x="656" y="147" type="curve" smooth="yes"/>
+ <point x="491" y="147"/>
+ <point x="403" y="284"/>
+ <point x="403" y="472" type="curve" smooth="yes"/>
+ <point x="403" y="962"/>
+ <point x="664" y="1284"/>
+ <point x="985" y="1284" type="curve" smooth="yes"/>
+ <point x="1081" y="1284"/>
+ <point x="1174" y="1235"/>
+ <point x="1222" y="1156" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitT_hree.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitT_hree.glif
new file mode 100644
index 0000000..e01df2c
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitT_hree.glif
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DigitThree" format="2">
+ <advance width="1180"/>
+ <unicode hex="0033"/>
+ <anchor x="515" y="-100" name="L"/>
+ <anchor x="922" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="562" y="853" type="line"/>
+ <point x="521" y="686" type="line"/>
+ <point x="591" y="686" type="line" smooth="yes"/>
+ <point x="802" y="686"/>
+ <point x="944" y="606"/>
+ <point x="944" y="476" type="curve" smooth="yes"/>
+ <point x="944" y="268"/>
+ <point x="738" y="147"/>
+ <point x="551" y="147" type="curve" smooth="yes"/>
+ <point x="371" y="147"/>
+ <point x="260" y="227"/>
+ <point x="181" y="348" type="curve"/>
+ <point x="104" y="137" type="line"/>
+ <point x="185" y="41"/>
+ <point x="341" y="-25"/>
+ <point x="518" y="-25" type="curve" smooth="yes"/>
+ <point x="815" y="-25"/>
+ <point x="1141" y="168"/>
+ <point x="1141" y="475" type="curve" smooth="yes"/>
+ <point x="1141" y="670"/>
+ <point x="973" y="763"/>
+ <point x="855" y="784" type="curve"/>
+ <point x="1046" y="827"/>
+ <point x="1266" y="955"/>
+ <point x="1266" y="1163" type="curve" smooth="yes"/>
+ <point x="1266" y="1338"/>
+ <point x="1073" y="1455"/>
+ <point x="852" y="1455" type="curve" smooth="yes"/>
+ <point x="685" y="1455"/>
+ <point x="536" y="1388"/>
+ <point x="433" y="1299" type="curve"/>
+ <point x="427" y="1132" type="line"/>
+ <point x="568" y="1246"/>
+ <point x="696" y="1284"/>
+ <point x="850" y="1284" type="curve" smooth="yes"/>
+ <point x="957" y="1284"/>
+ <point x="1068" y="1236"/>
+ <point x="1068" y="1137" type="curve" smooth="yes"/>
+ <point x="1068" y="949"/>
+ <point x="781" y="853"/>
+ <point x="632" y="853" type="curve" smooth="yes"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitT_wo.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitT_wo.glif
new file mode 100644
index 0000000..d1bbb54
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitT_wo.glif
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DigitTwo" format="2">
+ <advance width="1180"/>
+ <unicode hex="0032"/>
+ <anchor x="515" y="-100" name="L"/>
+ <anchor x="882" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1063" y="176" type="line"/>
+ <point x="980" y="163"/>
+ <point x="822" y="162"/>
+ <point x="625" y="162" type="curve" smooth="yes"/>
+ <point x="370" y="162" type="line"/>
+ <point x="783" y="393"/>
+ <point x="1210" y="830"/>
+ <point x="1210" y="1098" type="curve" smooth="yes"/>
+ <point x="1210" y="1296"/>
+ <point x="1075" y="1455"/>
+ <point x="842" y="1455" type="curve" smooth="yes"/>
+ <point x="673" y="1455"/>
+ <point x="488" y="1374"/>
+ <point x="380" y="1264" type="curve"/>
+ <point x="388" y="1098" type="line"/>
+ <point x="503" y="1203"/>
+ <point x="660" y="1279"/>
+ <point x="783" y="1279" type="curve" smooth="yes"/>
+ <point x="915" y="1279"/>
+ <point x="1003" y="1199"/>
+ <point x="1003" y="1063" type="curve" smooth="yes"/>
+ <point x="1003" y="848"/>
+ <point x="506" y="386"/>
+ <point x="101" y="167" type="curve"/>
+ <point x="60" y="0" type="line"/>
+ <point x="1020" y="0" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitZ_ero.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitZ_ero.glif
new file mode 100644
index 0000000..5d1bf0e
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_igitZ_ero.glif
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DigitZero" format="2">
+ <advance width="1180"/>
+ <unicode hex="0030"/>
+ <anchor x="520" y="-100" name="L"/>
+ <anchor x="927" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1024" y="711" type="curve" smooth="yes"/>
+ <point x="925" y="312"/>
+ <point x="747" y="142"/>
+ <point x="565" y="142" type="curve" smooth="yes"/>
+ <point x="432" y="142"/>
+ <point x="360" y="218"/>
+ <point x="360" y="383" type="curve" smooth="yes"/>
+ <point x="360" y="468"/>
+ <point x="377" y="579"/>
+ <point x="412" y="720" type="curve" smooth="yes"/>
+ <point x="512" y="1120"/>
+ <point x="678" y="1289"/>
+ <point x="871" y="1289" type="curve" smooth="yes"/>
+ <point x="1006" y="1289"/>
+ <point x="1077" y="1223"/>
+ <point x="1077" y="1051" type="curve" smooth="yes"/>
+ <point x="1077" y="966"/>
+ <point x="1060" y="854"/>
+ </contour>
+ <contour>
+ <point x="1230" y="715" type="curve" smooth="yes"/>
+ <point x="1262" y="841"/>
+ <point x="1276" y="949"/>
+ <point x="1276" y="1040" type="curve" smooth="yes"/>
+ <point x="1276" y="1335"/>
+ <point x="1124" y="1455"/>
+ <point x="902" y="1455" type="curve" smooth="yes"/>
+ <point x="613" y="1455"/>
+ <point x="344" y="1267"/>
+ <point x="206" y="716" type="curve" smooth="yes"/>
+ <point x="173" y="584"/>
+ <point x="158" y="474"/>
+ <point x="158" y="381" type="curve" smooth="yes"/>
+ <point x="158" y="104"/>
+ <point x="313" y="-25"/>
+ <point x="533" y="-25" type="curve" smooth="yes"/>
+ <point x="804" y="-25"/>
+ <point x="1086" y="138"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_ollarS_gn.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_ollarS_gn.glif
new file mode 100644
index 0000000..5c2db20
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_ollarS_gn.glif
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DollarSgn" format="2">
+ <advance width="1180"/>
+ <unicode hex="0024"/>
+ <outline>
+ <contour>
+ <point x="1225" y="1280" type="line"/>
+ <point x="1119" y="1337"/>
+ <point x="1023" y="1361"/>
+ <point x="882" y="1361" type="curve" smooth="yes"/>
+ <point x="513" y="1361"/>
+ <point x="354" y="1182"/>
+ <point x="354" y="992" type="curve" smooth="yes"/>
+ <point x="354" y="837"/>
+ <point x="446" y="771"/>
+ <point x="639" y="650" type="curve" smooth="yes"/>
+ <point x="844" y="521"/>
+ <point x="919" y="439"/>
+ <point x="919" y="357" type="curve" smooth="yes"/>
+ <point x="919" y="244"/>
+ <point x="826" y="158"/>
+ <point x="635" y="158" type="curve" smooth="yes"/>
+ <point x="469" y="158"/>
+ <point x="314" y="266"/>
+ <point x="251" y="347" type="curve"/>
+ <point x="163" y="162" type="line"/>
+ <point x="304" y="58"/>
+ <point x="453" y="0"/>
+ <point x="606" y="0" type="curve" smooth="yes"/>
+ <point x="872" y="0"/>
+ <point x="1102" y="119"/>
+ <point x="1102" y="381" type="curve" smooth="yes"/>
+ <point x="1102" y="528"/>
+ <point x="981" y="657"/>
+ <point x="801" y="771" type="curve" smooth="yes"/>
+ <point x="610" y="892"/>
+ <point x="535" y="943"/>
+ <point x="535" y="1024" type="curve" smooth="yes"/>
+ <point x="535" y="1116"/>
+ <point x="657" y="1203"/>
+ <point x="832" y="1203" type="curve" smooth="yes"/>
+ <point x="950" y="1203"/>
+ <point x="1031" y="1176"/>
+ <point x="1144" y="1104" type="curve"/>
+ </contour>
+ <contour>
+ <point x="878" y="1568" type="line"/>
+ <point x="434" y="-216" type="line"/>
+ <point x="574" y="-216" type="line"/>
+ <point x="1018" y="1568" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_ottedC_irc.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_ottedC_irc.glif
new file mode 100644
index 0000000..2cdf8fd
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/D_ottedC_irc.glif
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="DottedCirc" format="2">
+ <advance width="1086"/>
+ <unicode hex="25CC"/>
+ <anchor x="493" y="0" name="H"/>
+ <anchor x="468" y="-100" name="L"/>
+ <anchor x="750" y="0" name="O"/>
+ <anchor x="743" y="1000" name="U"/>
+ <outline>
+ <contour>
+ <point x="588" y="834" type="curve" smooth="yes"/>
+ <point x="588" y="858"/>
+ <point x="571" y="867"/>
+ <point x="553" y="867" type="curve" smooth="yes"/>
+ <point x="521" y="867"/>
+ <point x="491" y="837"/>
+ <point x="491" y="809" type="curve" smooth="yes"/>
+ <point x="491" y="788"/>
+ <point x="508" y="773"/>
+ <point x="530" y="773" type="curve" smooth="yes"/>
+ <point x="564" y="773"/>
+ <point x="588" y="805"/>
+ </contour>
+ <contour>
+ <point x="677" y="124" type="curve" smooth="yes"/>
+ <point x="647" y="124"/>
+ <point x="620" y="93"/>
+ <point x="620" y="67" type="curve" smooth="yes"/>
+ <point x="620" y="46"/>
+ <point x="636" y="30"/>
+ <point x="657" y="30" type="curve" smooth="yes"/>
+ <point x="687" y="30"/>
+ <point x="718" y="60"/>
+ <point x="718" y="86" type="curve" smooth="yes"/>
+ <point x="718" y="109"/>
+ <point x="700" y="124"/>
+ </contour>
+ <contour>
+ <point x="396" y="780" type="curve" smooth="yes"/>
+ <point x="369" y="780"/>
+ <point x="336" y="753"/>
+ <point x="336" y="722" type="curve" smooth="yes"/>
+ <point x="336" y="702"/>
+ <point x="351" y="687"/>
+ <point x="374" y="687" type="curve" smooth="yes"/>
+ <point x="403" y="687"/>
+ <point x="434" y="711"/>
+ <point x="434" y="744" type="curve" smooth="yes"/>
+ <point x="434" y="764"/>
+ <point x="414" y="780"/>
+ </contour>
+ <contour>
+ <point x="873" y="175" type="curve" smooth="yes"/>
+ <point x="872" y="199"/>
+ <point x="854" y="211"/>
+ <point x="833" y="211" type="curve" smooth="yes"/>
+ <point x="803" y="211"/>
+ <point x="774" y="183"/>
+ <point x="774" y="153" type="curve" smooth="yes"/>
+ <point x="774" y="133"/>
+ <point x="789" y="119"/>
+ <point x="812" y="119" type="curve" smooth="yes"/>
+ <point x="843" y="119"/>
+ <point x="873" y="146"/>
+ </contour>
+ <contour>
+ <point x="313" y="612" type="curve" smooth="yes"/>
+ <point x="312" y="633"/>
+ <point x="296" y="650"/>
+ <point x="275" y="650" type="curve" smooth="yes"/>
+ <point x="247" y="650"/>
+ <point x="215" y="623"/>
+ <point x="215" y="592" type="curve" smooth="yes"/>
+ <point x="215" y="573"/>
+ <point x="227" y="556"/>
+ <point x="251" y="556" type="curve" smooth="yes"/>
+ <point x="278" y="556"/>
+ <point x="313" y="581"/>
+ </contour>
+ <contour>
+ <point x="994" y="306" type="curve" smooth="yes"/>
+ <point x="993" y="327"/>
+ <point x="978" y="341"/>
+ <point x="958" y="341" type="curve" smooth="yes"/>
+ <point x="933" y="341"/>
+ <point x="896" y="321"/>
+ <point x="896" y="284" type="curve" smooth="yes"/>
+ <point x="896" y="265"/>
+ <point x="909" y="249"/>
+ <point x="934" y="249" type="curve" smooth="yes"/>
+ <point x="963" y="249"/>
+ <point x="994" y="275"/>
+ </contour>
+ <contour>
+ <point x="205" y="495" type="curve" smooth="yes"/>
+ <point x="175" y="495"/>
+ <point x="145" y="468"/>
+ <point x="145" y="438" type="curve" smooth="yes"/>
+ <point x="145" y="418"/>
+ <point x="159" y="402"/>
+ <point x="183" y="402" type="curve" smooth="yes"/>
+ <point x="208" y="402"/>
+ <point x="244" y="428"/>
+ <point x="244" y="459" type="curve" smooth="yes"/>
+ <point x="244" y="479"/>
+ <point x="227" y="495"/>
+ </contour>
+ <contour>
+ <point x="1026" y="496" type="curve" smooth="yes"/>
+ <point x="999" y="496"/>
+ <point x="965" y="469"/>
+ <point x="965" y="438" type="curve" smooth="yes"/>
+ <point x="965" y="418"/>
+ <point x="979" y="403"/>
+ <point x="1004" y="403" type="curve" smooth="yes"/>
+ <point x="1033" y="403"/>
+ <point x="1064" y="431"/>
+ <point x="1064" y="460" type="curve" smooth="yes"/>
+ <point x="1064" y="480"/>
+ <point x="1048" y="496"/>
+ </contour>
+ <contour>
+ <point x="237" y="307" type="curve" smooth="yes"/>
+ <point x="237" y="327"/>
+ <point x="221" y="341"/>
+ <point x="199" y="341" type="curve" smooth="yes"/>
+ <point x="169" y="341"/>
+ <point x="138" y="314"/>
+ <point x="138" y="285" type="curve" smooth="yes"/>
+ <point x="138" y="263"/>
+ <point x="153" y="248"/>
+ <point x="175" y="248" type="curve" smooth="yes"/>
+ <point x="206" y="248"/>
+ <point x="237" y="278"/>
+ </contour>
+ <contour>
+ <point x="1071" y="613" type="curve" smooth="yes"/>
+ <point x="1071" y="634"/>
+ <point x="1055" y="650"/>
+ <point x="1034" y="650" type="curve" smooth="yes"/>
+ <point x="1003" y="650"/>
+ <point x="973" y="619"/>
+ <point x="973" y="590" type="curve" smooth="yes"/>
+ <point x="973" y="570"/>
+ <point x="989" y="556"/>
+ <point x="1009" y="556" type="curve" smooth="yes"/>
+ <point x="1041" y="556"/>
+ <point x="1071" y="585"/>
+ </contour>
+ <contour>
+ <point x="292" y="177" type="curve" smooth="yes"/>
+ <point x="292" y="197"/>
+ <point x="277" y="211"/>
+ <point x="253" y="211" type="curve" smooth="yes"/>
+ <point x="224" y="211"/>
+ <point x="194" y="181"/>
+ <point x="194" y="154" type="curve" smooth="yes"/>
+ <point x="194" y="134"/>
+ <point x="211" y="118"/>
+ <point x="232" y="118" type="curve" smooth="yes"/>
+ <point x="262" y="118"/>
+ <point x="292" y="148"/>
+ </contour>
+ <contour>
+ <point x="917" y="724" type="curve" smooth="yes"/>
+ <point x="917" y="704"/>
+ <point x="931" y="686"/>
+ <point x="954" y="686" type="curve" smooth="yes"/>
+ <point x="984" y="686"/>
+ <point x="1014" y="716"/>
+ <point x="1014" y="745" type="curve" smooth="yes"/>
+ <point x="1014" y="765"/>
+ <point x="1000" y="780"/>
+ <point x="977" y="780" type="curve" smooth="yes"/>
+ <point x="947" y="780"/>
+ <point x="917" y="753"/>
+ </contour>
+ <contour>
+ <point x="403" y="87" type="curve" smooth="yes"/>
+ <point x="403" y="107"/>
+ <point x="390" y="123"/>
+ <point x="367" y="123" type="curve" smooth="yes"/>
+ <point x="339" y="123"/>
+ <point x="305" y="96"/>
+ <point x="305" y="68" type="curve" smooth="yes"/>
+ <point x="305" y="49"/>
+ <point x="320" y="30"/>
+ <point x="343" y="30" type="curve" smooth="yes"/>
+ <point x="371" y="30"/>
+ <point x="403" y="56"/>
+ </contour>
+ <contour>
+ <point x="806" y="810" type="curve" smooth="yes"/>
+ <point x="806" y="791"/>
+ <point x="819" y="773"/>
+ <point x="842" y="773" type="curve" smooth="yes"/>
+ <point x="869" y="773"/>
+ <point x="903" y="799"/>
+ <point x="903" y="830" type="curve" smooth="yes"/>
+ <point x="903" y="850"/>
+ <point x="889" y="867"/>
+ <point x="866" y="867" type="curve" smooth="yes"/>
+ <point x="836" y="867"/>
+ <point x="806" y="839"/>
+ </contour>
+ <contour>
+ <point x="553" y="57" type="curve" smooth="yes"/>
+ <point x="553" y="78"/>
+ <point x="538" y="93"/>
+ <point x="516" y="93" type="curve" smooth="yes"/>
+ <point x="485" y="93"/>
+ <point x="456" y="65"/>
+ <point x="456" y="36" type="curve" smooth="yes"/>
+ <point x="456" y="16"/>
+ <point x="471" y="0"/>
+ <point x="493" y="0" type="curve" smooth="yes"/>
+ <point x="523" y="0"/>
+ <point x="553" y="27"/>
+ </contour>
+ <contour>
+ <point x="656" y="839" type="curve" smooth="yes"/>
+ <point x="656" y="819"/>
+ <point x="671" y="805"/>
+ <point x="693" y="805" type="curve" smooth="yes"/>
+ <point x="721" y="805"/>
+ <point x="754" y="830"/>
+ <point x="754" y="861" type="curve" smooth="yes"/>
+ <point x="754" y="882"/>
+ <point x="738" y="898"/>
+ <point x="716" y="898" type="curve" smooth="yes"/>
+ <point x="685" y="898"/>
+ <point x="656" y="868"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/E_qS_gn.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/E_qS_gn.glif
new file mode 100644
index 0000000..3d756e8
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/E_qS_gn.glif
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="EqSgn" format="2">
+ <advance width="1180"/>
+ <unicode hex="003D"/>
+ <outline>
+ <contour>
+ <point x="177" y="470" type="line"/>
+ <point x="1137" y="470" type="line"/>
+ <point x="1173" y="617" type="line"/>
+ <point x="213" y="617" type="line"/>
+ </contour>
+ <contour>
+ <point x="262" y="813" type="line"/>
+ <point x="1222" y="813" type="line"/>
+ <point x="1259" y="960" type="line"/>
+ <point x="299" y="960" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/E_xclamationM_rk.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/E_xclamationM_rk.glif
new file mode 100644
index 0000000..a1c14d9
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/E_xclamationM_rk.glif
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="ExclamationMrk" format="2">
+ <advance width="744"/>
+ <unicode hex="0021"/>
+ <outline>
+ <contour>
+ <point x="497" y="431" type="line"/>
+ <point x="574" y="715"/>
+ <point x="653" y="1054"/>
+ <point x="799" y="1480" type="curve"/>
+ <point x="544" y="1480" type="line"/>
+ <point x="475" y="1054"/>
+ <point x="386" y="715"/>
+ <point x="322" y="431" type="curve"/>
+ </contour>
+ <contour>
+ <point x="188" y="90" type="curve" smooth="yes"/>
+ <point x="188" y="28"/>
+ <point x="238" y="-25"/>
+ <point x="303" y="-25" type="curve" smooth="yes"/>
+ <point x="387" y="-25"/>
+ <point x="464" y="45"/>
+ <point x="464" y="125" type="curve" smooth="yes"/>
+ <point x="464" y="186"/>
+ <point x="414" y="240"/>
+ <point x="349" y="240" type="curve" smooth="yes"/>
+ <point x="265" y="240"/>
+ <point x="188" y="170"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/F_ullS_top.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/F_ullS_top.glif
new file mode 100644
index 0000000..a6c4d08
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/F_ullS_top.glif
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="FullStop" format="2">
+ <advance width="620"/>
+ <unicode hex="002E"/>
+ <outline>
+ <contour>
+ <point x="148" y="90" type="curve" smooth="yes"/>
+ <point x="148" y="28"/>
+ <point x="198" y="-25"/>
+ <point x="263" y="-25" type="curve" smooth="yes"/>
+ <point x="347" y="-25"/>
+ <point x="424" y="45"/>
+ <point x="424" y="125" type="curve" smooth="yes"/>
+ <point x="424" y="186"/>
+ <point x="374" y="240"/>
+ <point x="309" y="240" type="curve" smooth="yes"/>
+ <point x="225" y="240"/>
+ <point x="148" y="170"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/G_T_S_gn.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/G_T_S_gn.glif
new file mode 100644
index 0000000..12da8b3
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/G_T_S_gn.glif
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="GTSgn" format="2">
+ <advance width="1180"/>
+ <unicode hex="003E"/>
+ <outline>
+ <contour>
+ <point x="312" y="1014" type="line"/>
+ <point x="1028" y="725" type="line"/>
+ <point x="163" y="417" type="line"/>
+ <point x="119" y="240" type="line"/>
+ <point x="1197" y="632" type="line"/>
+ <point x="1239" y="799" type="line"/>
+ <point x="356" y="1191" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/G_raveA_ccent.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/G_raveA_ccent.glif
new file mode 100644
index 0000000..48adfc4
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/G_raveA_ccent.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="GraveAccent" format="2">
+ <advance width="560"/>
+ <unicode hex="0060"/>
+ <anchor x="738" y="1635" name="U"/>
+ <outline>
+ <contour>
+ <point x="261" y="1568" type="line"/>
+ <point x="596" y="1147" type="line"/>
+ <point x="746" y="1147" type="line"/>
+ <point x="471" y="1568" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphen.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphen.glif
new file mode 100644
index 0000000..ae8cad5
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphen.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Hyphen" format="2">
+ <advance width="840"/>
+ <unicode hex="2010"/>
+ <anchor x="645" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="155" y="544" type="line"/>
+ <point x="855" y="544" type="line"/>
+ <point x="892" y="691" type="line"/>
+ <point x="192" y="691" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphenM_inus.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphenM_inus.glif
new file mode 100644
index 0000000..155b460
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphenM_inus.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="HyphenMinus" format="2">
+ <advance width="840"/>
+ <unicode hex="002D"/>
+ <anchor x="645" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="155" y="544" type="line"/>
+ <point x="855" y="544" type="line"/>
+ <point x="892" y="691" type="line"/>
+ <point x="192" y="691" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphen_S_oft.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphen_S_oft.glif
new file mode 100644
index 0000000..0c7b834
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/H_yphen_S_oft.glif
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Hyphen_Soft" format="2">
+ <advance width="840"/>
+ <unicode hex="00AD"/>
+ <anchor x="645" y="1100" name="U"/>
+ <outline>
+ <component base="HyphenMinus"/>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_T_S_gn.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_T_S_gn.glif
new file mode 100644
index 0000000..3c857a5
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_T_S_gn.glif
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LTSgn" format="2">
+ <advance width="1180"/>
+ <unicode hex="003C"/>
+ <outline>
+ <contour>
+ <point x="1123" y="417" type="line"/>
+ <point x="408" y="705" type="line"/>
+ <point x="1272" y="1014" type="line"/>
+ <point x="1316" y="1191" type="line"/>
+ <point x="239" y="799" type="line"/>
+ <point x="197" y="632" type="line"/>
+ <point x="1079" y="240" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftC_urlyB_rac.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftC_urlyB_rac.glif
new file mode 100644
index 0000000..4f8c90c
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftC_urlyB_rac.glif
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LftCurlyBrac" format="2">
+ <advance width="980"/>
+ <unicode hex="007B"/>
+ <outline>
+ <contour>
+ <point x="713" y="-265" type="line"/>
+ <point x="660" y="-250"/>
+ <point x="526" y="-188"/>
+ <point x="526" y="-158" type="curve" smooth="yes"/>
+ <point x="526" y="-59"/>
+ <point x="649" y="404"/>
+ <point x="649" y="469" type="curve" smooth="yes"/>
+ <point x="649" y="509"/>
+ <point x="520" y="577"/>
+ <point x="520" y="602" type="curve" smooth="yes"/>
+ <point x="520" y="620"/>
+ <point x="688" y="700"/>
+ <point x="712" y="730" type="curve" smooth="yes"/>
+ <point x="741" y="767"/>
+ <point x="867" y="1326"/>
+ <point x="912" y="1372" type="curve" smooth="yes"/>
+ <point x="938" y="1399"/>
+ <point x="1073" y="1447"/>
+ <point x="1146" y="1470" type="curve"/>
+ <point x="1140" y="1607" type="line"/>
+ <point x="1030" y="1581"/>
+ <point x="856" y="1529"/>
+ <point x="805" y="1485" type="curve" smooth="yes"/>
+ <point x="714" y="1406"/>
+ <point x="572" y="796"/>
+ <point x="540" y="764" type="curve" smooth="yes"/>
+ <point x="504" y="729"/>
+ <point x="300" y="633"/>
+ <point x="300" y="601" type="curve" smooth="yes"/>
+ <point x="300" y="560"/>
+ <point x="460" y="468"/>
+ <point x="460" y="432" type="curve" smooth="yes"/>
+ <point x="460" y="362"/>
+ <point x="355" y="-53"/>
+ <point x="355" y="-219" type="curve" smooth="yes"/>
+ <point x="355" y="-247"/>
+ <point x="358" y="-268"/>
+ <point x="365" y="-279" type="curve" smooth="yes"/>
+ <point x="394" y="-323"/>
+ <point x="542" y="-375"/>
+ <point x="639" y="-402" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftP_aren.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftP_aren.glif
new file mode 100644
index 0000000..bc65fc1
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftP_aren.glif
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LftParen" format="2">
+ <advance width="775"/>
+ <unicode hex="0028"/>
+ <outline>
+ <contour>
+ <point x="895" y="1607" type="line"/>
+ <point x="582" y="1415"/>
+ <point x="314" y="1061"/>
+ <point x="207" y="633" type="curve" smooth="yes"/>
+ <point x="176" y="508"/>
+ <point x="161" y="386"/>
+ <point x="161" y="270" type="curve" smooth="yes"/>
+ <point x="161" y="17"/>
+ <point x="233" y="-211"/>
+ <point x="374" y="-402" type="curve"/>
+ <point x="505" y="-260" type="line"/>
+ <point x="397" y="-102"/>
+ <point x="348" y="75"/>
+ <point x="348" y="270" type="curve" smooth="yes"/>
+ <point x="348" y="385"/>
+ <point x="365" y="506"/>
+ <point x="397" y="633" type="curve" smooth="yes"/>
+ <point x="484" y="982"/>
+ <point x="647" y="1254"/>
+ <point x="932" y="1455" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftS_qrB_rac.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftS_qrB_rac.glif
new file mode 100644
index 0000000..6d064d1
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_ftS_qrB_rac.glif
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LftSqrBrac" format="2">
+ <advance width="770"/>
+ <unicode hex="005B"/>
+ <outline>
+ <contour>
+ <point x="484" y="-402" type="line"/>
+ <point x="521" y="-255" type="line"/>
+ <point x="266" y="-255" type="line"/>
+ <point x="679" y="1421" type="line"/>
+ <point x="934" y="1421" type="line"/>
+ <point x="970" y="1568" type="line"/>
+ <point x="530" y="1568" type="line"/>
+ <point x="44" y="-402" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_owL_ine.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_owL_ine.glif
new file mode 100644
index 0000000..879d36b
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_owL_ine.glif
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LowLine" format="2">
+ <advance width="1254"/>
+ <unicode hex="005F"/>
+ <outline>
+ <contour>
+ <point x="-138" y="-314" type="line"/>
+ <point x="1135" y="-314" type="line"/>
+ <point x="1172" y="-167" type="line"/>
+ <point x="-101" y="-167" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apA_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apA_.glif
new file mode 100644
index 0000000..a186541
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apA_.glif
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapA" format="2">
+ <advance width="1395"/>
+ <unicode hex="0041"/>
+ <anchor x="1170" y="0" name="H"/>
+ <anchor x="602" y="-100" name="L"/>
+ <anchor x="1390" y="0" name="O"/>
+ <anchor x="1009" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1080" y="0" type="line"/>
+ <point x="1275" y="0" type="line"/>
+ <point x="1259" y="78"/>
+ <point x="1243" y="166"/>
+ <point x="1221" y="348" type="curve" smooth="yes"/>
+ <point x="1091" y="1431" type="line"/>
+ <point x="876" y="1431" type="line"/>
+ <point x="206" y="348" type="line" smooth="yes"/>
+ <point x="93" y="165"/>
+ <point x="35" y="79"/>
+ <point x="-20" y="0" type="curve"/>
+ <point x="195" y="0" type="line"/>
+ <point x="422" y="377" type="line"/>
+ <point x="1038" y="377" type="line"/>
+ </contour>
+ <contour>
+ <point x="944" y="1240" type="line"/>
+ <point x="1022" y="529" type="line"/>
+ <point x="514" y="529" type="line"/>
+ </contour>
+ </outline>
+ <lib>
+ <dict>
+ <key>org.sil.assocFeature</key>
+ <string>fea1</string>
+ </dict>
+ </lib>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apA_D_iaer.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apA_D_iaer.glif
new file mode 100644
index 0000000..6c3502c
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apA_D_iaer.glif
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapADiaer" format="2">
+ <advance width="1395"/>
+ <unicode hex="00C4"/>
+ <anchor x="1170" y="0" name="H"/>
+ <anchor x="602" y="-100" name="L"/>
+ <anchor x="1390" y="0" name="O"/>
+ <anchor x="1106" y="1935" name="U"/>
+ <outline>
+ <component base="LtnCapA"/>
+ <component base="CombDiaer" xOffset="1359" yOffset="430"/>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apB_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apB_.glif
new file mode 100644
index 0000000..5445f93
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apB_.glif
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapB" format="2">
+ <advance width="1271"/>
+ <unicode hex="0042"/>
+ <anchor x="530" y="-100" name="L"/>
+ <anchor x="937" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="625" y="1284" type="line"/>
+ <point x="667" y="1286"/>
+ <point x="733" y="1289"/>
+ <point x="811" y="1289" type="curve" smooth="yes"/>
+ <point x="993" y="1289"/>
+ <point x="1080" y="1230"/>
+ <point x="1080" y="1105" type="curve" smooth="yes"/>
+ <point x="1080" y="932"/>
+ <point x="931" y="838"/>
+ <point x="698" y="838" type="curve" smooth="yes"/>
+ <point x="513" y="838" type="line"/>
+ </contour>
+ <contour>
+ <point x="226" y="446" type="line"/>
+ <point x="178" y="252"/>
+ <point x="134" y="78"/>
+ <point x="100" y="0" type="curve"/>
+ <point x="151" y="-5"/>
+ <point x="359" y="-10"/>
+ <point x="562" y="-10" type="curve" smooth="yes"/>
+ <point x="960" y="-10"/>
+ <point x="1201" y="149"/>
+ <point x="1201" y="453" type="curve" smooth="yes"/>
+ <point x="1201" y="644"/>
+ <point x="1067" y="736"/>
+ <point x="955" y="764" type="curve"/>
+ <point x="1155" y="819"/>
+ <point x="1283" y="941"/>
+ <point x="1283" y="1140" type="curve" smooth="yes"/>
+ <point x="1283" y="1310"/>
+ <point x="1136" y="1441"/>
+ <point x="869" y="1441" type="curve" smooth="yes"/>
+ <point x="700" y="1441"/>
+ <point x="546" y="1437"/>
+ <point x="456" y="1431" type="curve"/>
+ <point x="452" y="1352"/>
+ <point x="407" y="1172"/>
+ <point x="359" y="980" type="curve" smooth="yes"/>
+ </contour>
+ <contour>
+ <point x="476" y="686" type="line"/>
+ <point x="721" y="686" type="line" smooth="yes"/>
+ <point x="892" y="686"/>
+ <point x="1011" y="598"/>
+ <point x="1011" y="450" type="curve" smooth="yes"/>
+ <point x="1011" y="218"/>
+ <point x="806" y="147"/>
+ <point x="586" y="147" type="curve" smooth="yes"/>
+ <point x="474" y="147"/>
+ <point x="379" y="150"/>
+ <point x="342" y="152" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apC_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apC_.glif
new file mode 100644
index 0000000..c2e4948
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apC_.glif
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapC" format="2">
+ <advance width="1341"/>
+ <unicode hex="0043"/>
+ <anchor x="690" y="0" name="H"/>
+ <anchor x="665" y="-100" name="L"/>
+ <anchor x="1072" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1237" y="318" type="line"/>
+ <point x="1115" y="222"/>
+ <point x="934" y="147"/>
+ <point x="752" y="147" type="curve" smooth="yes"/>
+ <point x="537" y="147"/>
+ <point x="385" y="304"/>
+ <point x="385" y="532" type="curve" smooth="yes"/>
+ <point x="385" y="964"/>
+ <point x="704" y="1289"/>
+ <point x="1037" y="1289" type="curve" smooth="yes"/>
+ <point x="1168" y="1289"/>
+ <point x="1310" y="1235"/>
+ <point x="1385" y="1132" type="curve"/>
+ <point x="1489" y="1308" type="line"/>
+ <point x="1388" y="1408"/>
+ <point x="1201" y="1455"/>
+ <point x="1058" y="1455" type="curve" smooth="yes"/>
+ <point x="645" y="1455"/>
+ <point x="185" y="1093"/>
+ <point x="185" y="513" type="curve" smooth="yes"/>
+ <point x="185" y="202"/>
+ <point x="381" y="-25"/>
+ <point x="709" y="-25" type="curve" smooth="yes"/>
+ <point x="896" y="-25"/>
+ <point x="1087" y="21"/>
+ <point x="1230" y="127" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apD_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apD_.glif
new file mode 100644
index 0000000..3b93811
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apD_.glif
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapD" format="2">
+ <advance width="1421"/>
+ <unicode hex="0044"/>
+ <anchor x="630" y="-100" name="L"/>
+ <anchor x="1037" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="226" y="446" type="line"/>
+ <point x="176" y="252"/>
+ <point x="134" y="78"/>
+ <point x="100" y="0" type="curve"/>
+ <point x="100" y="0"/>
+ <point x="414" y="-10"/>
+ <point x="542" y="-10" type="curve" smooth="yes"/>
+ <point x="985" y="-10"/>
+ <point x="1299" y="181"/>
+ <point x="1415" y="648" type="curve" smooth="yes"/>
+ <point x="1437" y="738"/>
+ <point x="1447" y="819"/>
+ <point x="1447" y="891" type="curve" smooth="yes"/>
+ <point x="1447" y="1279"/>
+ <point x="1188" y="1441"/>
+ <point x="894" y="1441" type="curve" smooth="yes"/>
+ <point x="759" y="1441"/>
+ <point x="543" y="1437"/>
+ <point x="456" y="1431" type="curve"/>
+ <point x="452" y="1352"/>
+ <point x="407" y="1172"/>
+ <point x="359" y="980" type="curve" smooth="yes"/>
+ </contour>
+ <contour>
+ <point x="623" y="1279" type="line"/>
+ <point x="674" y="1281"/>
+ <point x="764" y="1284"/>
+ <point x="830" y="1284" type="curve" smooth="yes"/>
+ <point x="1105" y="1284"/>
+ <point x="1246" y="1140"/>
+ <point x="1246" y="850" type="curve" smooth="yes"/>
+ <point x="1246" y="784"/>
+ <point x="1236" y="710"/>
+ <point x="1216" y="629" type="curve" smooth="yes"/>
+ <point x="1134" y="300"/>
+ <point x="925" y="152"/>
+ <point x="572" y="152" type="curve" smooth="yes"/>
+ <point x="477" y="152"/>
+ <point x="391" y="158"/>
+ <point x="345" y="162" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apE_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apE_.glif
new file mode 100644
index 0000000..8b5f8b9
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apE_.glif
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapE" format="2">
+ <advance width="1140"/>
+ <unicode hex="0045"/>
+ <anchor x="540" y="0" name="H"/>
+ <anchor x="515" y="-100" name="L"/>
+ <anchor x="857" y="0" name="O"/>
+ <anchor x="1400" y="1200" name="R"/>
+ <anchor x="922" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="511" y="828" type="line"/>
+ <point x="621" y="1269" type="line"/>
+ <point x="1266" y="1269" type="line"/>
+ <point x="1306" y="1431" type="line"/>
+ <point x="456" y="1431" type="line"/>
+ <point x="452" y="1352"/>
+ <point x="413" y="1197"/>
+ <point x="365" y="1005" type="curve" smooth="yes"/>
+ <point x="221" y="426" type="line" smooth="yes"/>
+ <point x="173" y="233"/>
+ <point x="134" y="78"/>
+ <point x="100" y="0" type="curve"/>
+ <point x="980" y="0" type="line"/>
+ <point x="1023" y="176" type="line"/>
+ <point x="940" y="163"/>
+ <point x="806" y="162"/>
+ <point x="609" y="162" type="curve" smooth="yes"/>
+ <point x="345" y="162" type="line"/>
+ <point x="472" y="671" type="line"/>
+ <point x="1042" y="671" type="line"/>
+ <point x="1081" y="828" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apF_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apF_.glif
new file mode 100644
index 0000000..cbc1726
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apF_.glif
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapF" format="2">
+ <advance width="1130"/>
+ <unicode hex="0046"/>
+ <anchor x="510" y="-100" name="L"/>
+ <anchor x="917" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="508" y="818" type="line"/>
+ <point x="621" y="1269" type="line"/>
+ <point x="1286" y="1269" type="line"/>
+ <point x="1326" y="1431" type="line"/>
+ <point x="456" y="1431" type="line"/>
+ <point x="452" y="1352"/>
+ <point x="412" y="1193"/>
+ <point x="364" y="1000" type="curve" smooth="yes"/>
+ <point x="221" y="426" type="line" smooth="yes"/>
+ <point x="173" y="233"/>
+ <point x="134" y="78"/>
+ <point x="100" y="0" type="curve"/>
+ <point x="320" y="0" type="line"/>
+ <point x="323" y="76"/>
+ <point x="362" y="232"/>
+ <point x="411" y="426" type="curve" smooth="yes"/>
+ <point x="470" y="662" type="line"/>
+ <point x="1050" y="662" type="line"/>
+ <point x="1088" y="818" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apG_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apG_.glif
new file mode 100644
index 0000000..c39b75a
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apG_.glif
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapG" format="2">
+ <advance width="1406"/>
+ <unicode hex="0047"/>
+ <anchor x="685" y="0" name="H"/>
+ <anchor x="660" y="-100" name="L"/>
+ <anchor x="1067" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1403" y="710" type="line"/>
+ <point x="863" y="710" type="line"/>
+ <point x="822" y="548" type="line"/>
+ <point x="1172" y="548" type="line"/>
+ <point x="1090" y="220" type="line"/>
+ <point x="1012" y="176"/>
+ <point x="858" y="147"/>
+ <point x="739" y="147" type="curve" smooth="yes"/>
+ <point x="520" y="147"/>
+ <point x="384" y="272"/>
+ <point x="384" y="493" type="curve" smooth="yes"/>
+ <point x="384" y="560"/>
+ <point x="394" y="636"/>
+ <point x="415" y="720" type="curve" smooth="yes"/>
+ <point x="500" y="1062"/>
+ <point x="747" y="1289"/>
+ <point x="1052" y="1289" type="curve" smooth="yes"/>
+ <point x="1195" y="1289"/>
+ <point x="1335" y="1233"/>
+ <point x="1425" y="1122" type="curve"/>
+ <point x="1534" y="1298" type="line"/>
+ <point x="1409" y="1405"/>
+ <point x="1235" y="1455"/>
+ <point x="1063" y="1455" type="curve" smooth="yes"/>
+ <point x="680" y="1455"/>
+ <point x="334" y="1195"/>
+ <point x="217" y="726" type="curve" smooth="yes"/>
+ <point x="195" y="639"/>
+ <point x="185" y="559"/>
+ <point x="185" y="486" type="curve" smooth="yes"/>
+ <point x="185" y="162"/>
+ <point x="406" y="-25"/>
+ <point x="714" y="-25" type="curve" smooth="yes"/>
+ <point x="907" y="-25"/>
+ <point x="1149" y="50"/>
+ <point x="1258" y="132" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apH_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apH_.glif
new file mode 100644
index 0000000..f454288
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apH_.glif
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapH" format="2">
+ <advance width="1455"/>
+ <unicode hex="0048"/>
+ <anchor x="225" y="0" name="H"/>
+ <anchor x="640" y="-100" name="L"/>
+ <anchor x="1047" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1230" y="0" type="line"/>
+ <point x="1234" y="78"/>
+ <point x="1273" y="233"/>
+ <point x="1321" y="426" type="curve" smooth="yes"/>
+ <point x="1465" y="1005" type="line" smooth="yes"/>
+ <point x="1513" y="1198"/>
+ <point x="1552" y="1352"/>
+ <point x="1586" y="1431" type="curve"/>
+ <point x="1381" y="1431" type="line"/>
+ <point x="1228" y="818" type="line"/>
+ <point x="508" y="818" type="line"/>
+ <point x="661" y="1431" type="line"/>
+ <point x="456" y="1431" type="line"/>
+ <point x="452" y="1352"/>
+ <point x="413" y="1197"/>
+ <point x="365" y="1005" type="curve" smooth="yes"/>
+ <point x="221" y="426" type="line" smooth="yes"/>
+ <point x="173" y="233"/>
+ <point x="134" y="78"/>
+ <point x="100" y="0" type="curve"/>
+ <point x="305" y="0" type="line"/>
+ <point x="470" y="662" type="line"/>
+ <point x="1190" y="662" type="line"/>
+ <point x="1025" y="0" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apI_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apI_.glif
new file mode 100644
index 0000000..78b151c
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apI_.glif
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapI" format="2">
+ <advance width="955"/>
+ <unicode hex="0049"/>
+ <anchor x="417" y="0" name="H"/>
+ <anchor x="392" y="-100" name="L"/>
+ <anchor x="613" y="0" name="O"/>
+ <anchor x="1215" y="1200" name="R"/>
+ <anchor x="799" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="436" y="1431" type="line"/>
+ <point x="401" y="1289" type="line"/>
+ <point x="641" y="1289" type="line"/>
+ <point x="355" y="142" type="line"/>
+ <point x="115" y="142" type="line"/>
+ <point x="80" y="0" type="line"/>
+ <point x="755" y="0" type="line"/>
+ <point x="790" y="142" type="line"/>
+ <point x="545" y="142" type="line"/>
+ <point x="831" y="1289" type="line"/>
+ <point x="1076" y="1289" type="line"/>
+ <point x="1111" y="1431" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apJ_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apJ_.glif
new file mode 100644
index 0000000..417d1f8
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apJ_.glif
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapJ" format="2">
+ <advance width="996"/>
+ <unicode hex="004A"/>
+ <anchor x="325" y="-100" name="L"/>
+ <anchor x="997" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="871" y="1431" type="line"/>
+ <point x="858" y="1327"/>
+ <point x="817" y="1151"/>
+ <point x="769" y="960" type="curve" smooth="yes"/>
+ <point x="648" y="475" type="line" smooth="yes"/>
+ <point x="592" y="251"/>
+ <point x="484" y="152"/>
+ <point x="337" y="152" type="curve" smooth="yes"/>
+ <point x="245" y="152"/>
+ <point x="145" y="224"/>
+ <point x="97" y="299" type="curve"/>
+ <point x="6" y="118" type="line"/>
+ <point x="58" y="39"/>
+ <point x="193" y="-25"/>
+ <point x="298" y="-25" type="curve" smooth="yes"/>
+ <point x="555" y="-25"/>
+ <point x="749" y="117"/>
+ <point x="850" y="524" type="curve" smooth="yes"/>
+ <point x="1076" y="1431" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apK_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apK_.glif
new file mode 100644
index 0000000..8e54a6d
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apK_.glif
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapK" format="2">
+ <advance width="1261"/>
+ <unicode hex="004B"/>
+ <anchor x="210" y="0" name="H"/>
+ <anchor x="610" y="-100" name="L"/>
+ <anchor x="972" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1221" y="1431" type="line"/>
+ <point x="406" y="689" type="line"/>
+ <point x="547" y="730" type="line"/>
+ <point x="660" y="725" type="line"/>
+ <point x="1461" y="1431" type="line"/>
+ </contour>
+ <contour>
+ <point x="1170" y="0" type="line"/>
+ <point x="615" y="823" type="line"/>
+ <point x="469" y="720" type="line"/>
+ <point x="925" y="0" type="line"/>
+ </contour>
+ <contour>
+ <point x="661" y="1431" type="line"/>
+ <point x="456" y="1431" type="line"/>
+ <point x="452" y="1352"/>
+ <point x="413" y="1197"/>
+ <point x="365" y="1005" type="curve" smooth="yes"/>
+ <point x="221" y="426" type="line" smooth="yes"/>
+ <point x="173" y="233"/>
+ <point x="134" y="78"/>
+ <point x="100" y="0" type="curve"/>
+ <point x="305" y="0" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apL_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apL_.glif
new file mode 100644
index 0000000..d2eb932
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apL_.glif
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapL" format="2">
+ <advance width="1060"/>
+ <unicode hex="004C"/>
+ <anchor x="532" y="0" name="H"/>
+ <anchor x="507" y="-100" name="L"/>
+ <anchor x="780" y="1200" name="R"/>
+ <anchor x="914" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="345" y="162" type="line"/>
+ <point x="661" y="1431" type="line"/>
+ <point x="456" y="1431" type="line"/>
+ <point x="452" y="1352"/>
+ <point x="413" y="1197"/>
+ <point x="365" y="1005" type="curve" smooth="yes"/>
+ <point x="221" y="426" type="line" smooth="yes"/>
+ <point x="173" y="233"/>
+ <point x="134" y="78"/>
+ <point x="100" y="0" type="curve"/>
+ <point x="965" y="0" type="line"/>
+ <point x="1008" y="176" type="line"/>
+ <point x="925" y="163"/>
+ <point x="766" y="162"/>
+ <point x="569" y="162" type="curve" smooth="yes"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apM_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apM_.glif
new file mode 100644
index 0000000..7c3c824
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apM_.glif
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapM" format="2">
+ <advance width="1785"/>
+ <unicode hex="004D"/>
+ <anchor x="800" y="-100" name="L"/>
+ <anchor x="1207" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="880" y="201" type="line"/>
+ <point x="751" y="1431" type="line"/>
+ <point x="591" y="1431" type="line"/>
+ <point x="740" y="0" type="line"/>
+ <point x="935" y="0" type="line"/>
+ <point x="1793" y="1431" type="line"/>
+ <point x="1616" y="1431" type="line"/>
+ </contour>
+ <contour>
+ <point x="536" y="1431" type="line"/>
+ <point x="536" y="1431"/>
+ <point x="184" y="194"/>
+ <point x="110" y="0" type="curve"/>
+ <point x="295" y="0" type="line"/>
+ <point x="621" y="1181" type="line"/>
+ <point x="711" y="1431" type="line"/>
+ </contour>
+ <contour>
+ <point x="1560" y="0" type="line"/>
+ <point x="1579" y="194"/>
+ <point x="1846" y="1431"/>
+ <point x="1846" y="1431" type="curve"/>
+ <point x="1671" y="1431" type="line"/>
+ <point x="1641" y="1181" type="line"/>
+ <point x="1375" y="0" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apN_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apN_.glif
new file mode 100644
index 0000000..7306669
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apN_.glif
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapN" format="2">
+ <advance width="1480"/>
+ <unicode hex="004E"/>
+ <anchor x="1170" y="0" name="H"/>
+ <anchor x="652" y="-100" name="L"/>
+ <anchor x="1059" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="491" y="1328" type="line"/>
+ <point x="1075" y="0" type="line"/>
+ <point x="1219" y="98" type="line"/>
+ <point x="636" y="1431" type="line"/>
+ </contour>
+ <contour>
+ <point x="1075" y="0" type="line"/>
+ <point x="1250" y="0" type="line"/>
+ <point x="1500" y="1005" type="line" smooth="yes"/>
+ <point x="1548" y="1198"/>
+ <point x="1588" y="1352"/>
+ <point x="1621" y="1431" type="curve"/>
+ <point x="1431" y="1431" type="line"/>
+ </contour>
+ <contour>
+ <point x="636" y="1431" type="line"/>
+ <point x="446" y="1431" type="line"/>
+ <point x="442" y="1352"/>
+ <point x="403" y="1197"/>
+ <point x="355" y="1005" type="curve" smooth="yes"/>
+ <point x="211" y="426" type="line" smooth="yes"/>
+ <point x="163" y="233"/>
+ <point x="124" y="78"/>
+ <point x="90" y="0" type="curve"/>
+ <point x="280" y="0" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apO_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apO_.glif
new file mode 100644
index 0000000..19c4886
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apO_.glif
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapO" format="2">
+ <advance width="1447"/>
+ <unicode hex="004F"/>
+ <anchor x="657" y="0" name="H"/>
+ <anchor x="632" y="-100" name="L"/>
+ <anchor x="896" y="0" name="O"/>
+ <anchor x="1700" y="1200" name="R"/>
+ <anchor x="1039" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="719" y="147" type="curve" smooth="yes"/>
+ <point x="514" y="147"/>
+ <point x="386" y="300"/>
+ <point x="386" y="541" type="curve" smooth="yes"/>
+ <point x="386" y="871"/>
+ <point x="606" y="1284"/>
+ <point x="963" y="1284" type="curve" smooth="yes"/>
+ <point x="1164" y="1284"/>
+ <point x="1291" y="1133"/>
+ <point x="1291" y="892" type="curve" smooth="yes"/>
+ <point x="1291" y="563"/>
+ <point x="1077" y="147"/>
+ </contour>
+ <contour>
+ <point x="1492" y="931" type="curve" smooth="yes"/>
+ <point x="1492" y="1263"/>
+ <point x="1278" y="1455"/>
+ <point x="1015" y="1455" type="curve" smooth="yes"/>
+ <point x="599" y="1455"/>
+ <point x="185" y="1036"/>
+ <point x="185" y="500" type="curve" smooth="yes"/>
+ <point x="185" y="167"/>
+ <point x="400" y="-25"/>
+ <point x="666" y="-25" type="curve" smooth="yes"/>
+ <point x="1078" y="-25"/>
+ <point x="1492" y="395"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apP_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apP_.glif
new file mode 100644
index 0000000..5b51a57
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apP_.glif
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapP" format="2">
+ <advance width="1190"/>
+ <unicode hex="0050"/>
+ <anchor x="552" y="-100" name="L"/>
+ <anchor x="959" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="443" y="554" type="line"/>
+ <point x="506" y="547"/>
+ <point x="597" y="544"/>
+ <point x="670" y="544" type="curve" smooth="yes"/>
+ <point x="1058" y="544"/>
+ <point x="1321" y="733"/>
+ <point x="1321" y="1084" type="curve" smooth="yes"/>
+ <point x="1321" y="1302"/>
+ <point x="1141" y="1441"/>
+ <point x="864" y="1441" type="curve" smooth="yes"/>
+ <point x="651" y="1441"/>
+ <point x="456" y="1431"/>
+ <point x="456" y="1431" type="curve"/>
+ <point x="452" y="1352"/>
+ <point x="407" y="1172"/>
+ <point x="359" y="980" type="curve"/>
+ <point x="221" y="426" type="line" smooth="yes"/>
+ <point x="173" y="233"/>
+ <point x="134" y="78"/>
+ <point x="100" y="0" type="curve"/>
+ <point x="320" y="0" type="line"/>
+ <point x="324" y="76"/>
+ <point x="362" y="232"/>
+ <point x="411" y="426" type="curve" smooth="yes"/>
+ </contour>
+ <contour>
+ <point x="623" y="1279" type="line"/>
+ <point x="692" y="1282"/>
+ <point x="721" y="1284"/>
+ <point x="815" y="1284" type="curve" smooth="yes"/>
+ <point x="1036" y="1284"/>
+ <point x="1121" y="1172"/>
+ <point x="1121" y="1048" type="curve" smooth="yes"/>
+ <point x="1121" y="845"/>
+ <point x="968" y="696"/>
+ <point x="693" y="696" type="curve" smooth="yes"/>
+ <point x="618" y="696"/>
+ <point x="542" y="698"/>
+ <point x="481" y="706" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apQ_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apQ_.glif
new file mode 100644
index 0000000..3dcbc8d
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apQ_.glif
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapQ" format="2">
+ <advance width="1459"/>
+ <unicode hex="0051"/>
+ <anchor x="589" y="-270" name="L"/>
+ <anchor x="1039" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1495" y="939" type="curve" smooth="yes"/>
+ <point x="1495" y="1266"/>
+ <point x="1306" y="1455"/>
+ <point x="1026" y="1455" type="curve" smooth="yes"/>
+ <point x="703" y="1455"/>
+ <point x="332" y="1195"/>
+ <point x="215" y="726" type="curve" smooth="yes"/>
+ <point x="194" y="642"/>
+ <point x="185" y="564"/>
+ <point x="185" y="492" type="curve" smooth="yes"/>
+ <point x="185" y="165"/>
+ <point x="388" y="-25"/>
+ <point x="652" y="-25" type="curve" smooth="yes"/>
+ <point x="714" y="-25"/>
+ <point x="781" y="-17"/>
+ <point x="829" y="0" type="curve"/>
+ <point x="898" y="0"/>
+ <point x="1133" y="-186"/>
+ <point x="1217" y="-186" type="curve" smooth="yes"/>
+ <point x="1271" y="-186"/>
+ <point x="1355" y="-79"/>
+ <point x="1388" y="-44" type="curve"/>
+ <point x="1258" y="-27"/>
+ <point x="1155" y="27"/>
+ <point x="1049" y="103" type="curve"/>
+ <point x="1253" y="217"/>
+ <point x="1495" y="528"/>
+ </contour>
+ <contour>
+ <point x="690" y="147" type="curve" smooth="yes"/>
+ <point x="492" y="147"/>
+ <point x="384" y="284"/>
+ <point x="384" y="508" type="curve" smooth="yes"/>
+ <point x="384" y="856"/>
+ <point x="609" y="1284"/>
+ <point x="994" y="1284" type="curve" smooth="yes"/>
+ <point x="1188" y="1284"/>
+ <point x="1295" y="1149"/>
+ <point x="1295" y="925" type="curve" smooth="yes"/>
+ <point x="1295" y="490"/>
+ <point x="985" y="147"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apR_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apR_.glif
new file mode 100644
index 0000000..c8f8186
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apR_.glif
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapR" format="2">
+ <advance width="1295"/>
+ <unicode hex="0052"/>
+ <anchor x="590" y="0" name="H"/>
+ <anchor x="525" y="-100" name="L"/>
+ <anchor x="932" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="457" y="613" type="line"/>
+ <point x="712" y="613" type="line" smooth="yes"/>
+ <point x="1010" y="613"/>
+ <point x="1303" y="784"/>
+ <point x="1303" y="1114" type="curve" smooth="yes"/>
+ <point x="1303" y="1326"/>
+ <point x="1114" y="1441"/>
+ <point x="844" y="1441" type="curve" smooth="yes"/>
+ <point x="610" y="1441"/>
+ <point x="456" y="1431"/>
+ <point x="456" y="1431" type="curve"/>
+ <point x="452" y="1352"/>
+ <point x="407" y="1172"/>
+ <point x="359" y="980" type="curve" smooth="yes"/>
+ <point x="221" y="426" type="line"/>
+ <point x="173" y="233"/>
+ <point x="134" y="78"/>
+ <point x="100" y="0" type="curve"/>
+ <point x="320" y="0" type="line"/>
+ <point x="324" y="76"/>
+ <point x="363" y="233"/>
+ <point x="411" y="426" type="curve"/>
+ </contour>
+ <contour>
+ <point x="623" y="1279" type="line"/>
+ <point x="677" y="1281"/>
+ <point x="725" y="1284"/>
+ <point x="795" y="1284" type="curve" smooth="yes"/>
+ <point x="1003" y="1284"/>
+ <point x="1104" y="1203"/>
+ <point x="1104" y="1076" type="curve" smooth="yes"/>
+ <point x="1104" y="856"/>
+ <point x="921" y="764"/>
+ <point x="685" y="764" type="curve" smooth="yes"/>
+ <point x="495" y="764" type="line"/>
+ </contour>
+ <contour>
+ <point x="656" y="622" type="line"/>
+ <point x="930" y="0" type="line"/>
+ <point x="1185" y="0" type="line"/>
+ <point x="1122" y="89"/>
+ <point x="864" y="602"/>
+ <point x="828" y="676" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apS_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apS_.glif
new file mode 100644
index 0000000..01e9f47
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apS_.glif
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapS" format="2">
+ <advance width="1155"/>
+ <unicode hex="0053"/>
+ <anchor x="520" y="0" name="H"/>
+ <anchor x="495" y="-100" name="L"/>
+ <anchor x="902" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1260" y="1347" type="line"/>
+ <point x="1146" y="1419"/>
+ <point x="1021" y="1455"/>
+ <point x="867" y="1455" type="curve" smooth="yes"/>
+ <point x="549" y="1455"/>
+ <point x="320" y="1303"/>
+ <point x="320" y="1040" type="curve" smooth="yes"/>
+ <point x="320" y="901"/>
+ <point x="438" y="794"/>
+ <point x="622" y="691" type="curve" smooth="yes"/>
+ <point x="877" y="549"/>
+ <point x="914" y="461"/>
+ <point x="914" y="378" type="curve" smooth="yes"/>
+ <point x="914" y="256"/>
+ <point x="792" y="147"/>
+ <point x="621" y="147" type="curve" smooth="yes"/>
+ <point x="473" y="147"/>
+ <point x="278" y="235"/>
+ <point x="161" y="378" type="curve"/>
+ <point x="65" y="187" type="line"/>
+ <point x="178" y="73"/>
+ <point x="365" y="-25"/>
+ <point x="558" y="-25" type="curve" smooth="yes"/>
+ <point x="852" y="-25"/>
+ <point x="1114" y="115"/>
+ <point x="1114" y="414" type="curve" smooth="yes"/>
+ <point x="1114" y="526"/>
+ <point x="1057" y="679"/>
+ <point x="800" y="828" type="curve" smooth="yes"/>
+ <point x="597" y="946"/>
+ <point x="510" y="1005"/>
+ <point x="510" y="1079" type="curve" smooth="yes"/>
+ <point x="510" y="1210"/>
+ <point x="659" y="1284"/>
+ <point x="845" y="1284" type="curve" smooth="yes"/>
+ <point x="959" y="1284"/>
+ <point x="1075" y="1240"/>
+ <point x="1173" y="1156" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apT_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apT_.glif
new file mode 100644
index 0000000..0eeece4
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apT_.glif
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapT" format="2">
+ <advance width="1245"/>
+ <unicode hex="0054"/>
+ <anchor x="562" y="0" name="H"/>
+ <anchor x="562" y="-100" name="L"/>
+ <anchor x="944" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="341" y="1431" type="line"/>
+ <point x="296" y="1250" type="line"/>
+ <point x="380" y="1266"/>
+ <point x="457" y="1269"/>
+ <point x="546" y="1269" type="curve" smooth="yes"/>
+ <point x="781" y="1269" type="line"/>
+ <point x="571" y="426" type="line" smooth="yes"/>
+ <point x="523" y="233"/>
+ <point x="481" y="78"/>
+ <point x="445" y="0" type="curve"/>
+ <point x="675" y="0" type="line"/>
+ <point x="677" y="78"/>
+ <point x="713" y="233"/>
+ <point x="761" y="426" type="curve" smooth="yes"/>
+ <point x="971" y="1269" type="line"/>
+ <point x="1211" y="1269" type="line" smooth="yes"/>
+ <point x="1301" y="1269"/>
+ <point x="1375" y="1266"/>
+ <point x="1451" y="1250" type="curve"/>
+ <point x="1496" y="1431" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apU_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apU_.glif
new file mode 100644
index 0000000..ed6e991
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apU_.glif
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapU" format="2">
+ <advance width="1420"/>
+ <unicode hex="0055"/>
+ <anchor x="647" y="0" name="H"/>
+ <anchor x="622" y="-100" name="L"/>
+ <anchor x="865" y="0" name="O"/>
+ <anchor x="1640" y="1200" name="R"/>
+ <anchor x="1029" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1346" y="1431" type="line"/>
+ <point x="1126" y="549" type="line" smooth="yes"/>
+ <point x="1055" y="264"/>
+ <point x="916" y="132"/>
+ <point x="682" y="132" type="curve" smooth="yes"/>
+ <point x="485" y="132"/>
+ <point x="421" y="244"/>
+ <point x="421" y="391" type="curve" smooth="yes"/>
+ <point x="421" y="451"/>
+ <point x="431" y="516"/>
+ <point x="448" y="582" type="curve" smooth="yes"/>
+ <point x="661" y="1431" type="line"/>
+ <point x="456" y="1431" type="line"/>
+ <point x="451" y="1352"/>
+ <point x="414" y="1198"/>
+ <point x="365" y="1005" type="curve" smooth="yes"/>
+ <point x="251" y="552" type="line" smooth="yes"/>
+ <point x="236" y="493"/>
+ <point x="228" y="435"/>
+ <point x="228" y="379" type="curve" smooth="yes"/>
+ <point x="228" y="157"/>
+ <point x="351" y="-25"/>
+ <point x="643" y="-25" type="curve" smooth="yes"/>
+ <point x="1020" y="-25"/>
+ <point x="1223" y="177"/>
+ <point x="1299" y="480" type="curve" smooth="yes"/>
+ <point x="1430" y="1005" type="line" smooth="yes"/>
+ <point x="1480" y="1207"/>
+ <point x="1519" y="1352"/>
+ <point x="1551" y="1431" type="curve"/>
+ </contour>
+ </outline>
+ <lib>
+ <dict>
+ <key>org.sil.assocFeature</key>
+ <string>fea2</string>
+ </dict>
+ </lib>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apV_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apV_.glif
new file mode 100644
index 0000000..2bf8b96
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apV_.glif
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapV" format="2">
+ <advance width="1345"/>
+ <unicode hex="0056"/>
+ <anchor x="620" y="0" name="H"/>
+ <anchor x="587" y="-100" name="L"/>
+ <anchor x="820" y="0" name="O"/>
+ <anchor x="994" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1381" y="1431" type="line"/>
+ <point x="654" y="191" type="line"/>
+ <point x="536" y="1431" type="line"/>
+ <point x="331" y="1431" type="line"/>
+ <point x="344" y="1350"/>
+ <point x="355" y="1262"/>
+ <point x="377" y="1073" type="curve" smooth="yes"/>
+ <point x="500" y="0" type="line"/>
+ <point x="725" y="0" type="line"/>
+ <point x="1377" y="1073" type="line" smooth="yes"/>
+ <point x="1492" y="1263"/>
+ <point x="1550" y="1350"/>
+ <point x="1606" y="1431" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apW_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apW_.glif
new file mode 100644
index 0000000..553ea17
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apW_.glif
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapW" format="2">
+ <advance width="2060"/>
+ <unicode hex="0057"/>
+ <anchor x="942" y="-100" name="L"/>
+ <anchor x="1349" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="1535" y="0" type="line"/>
+ <point x="2107" y="1073" type="line" smooth="yes"/>
+ <point x="2208" y="1263"/>
+ <point x="2259" y="1350"/>
+ <point x="2311" y="1431" type="curve"/>
+ <point x="2081" y="1431" type="line"/>
+ <point x="1431" y="127" type="line"/>
+ <point x="1420" y="0" type="line"/>
+ </contour>
+ <contour>
+ <point x="1310" y="0" type="line"/>
+ <point x="1420" y="0" type="line"/>
+ <point x="1461" y="127" type="line"/>
+ <point x="1406" y="1431" type="line"/>
+ <point x="1231" y="1431" type="line"/>
+ <point x="1248" y="1279" type="line"/>
+ </contour>
+ <contour>
+ <point x="625" y="0" type="line"/>
+ <point x="1406" y="1431" type="line"/>
+ <point x="1221" y="1431" type="line"/>
+ <point x="521" y="127" type="line"/>
+ <point x="521" y="0" type="line"/>
+ </contour>
+ <contour>
+ <point x="546" y="1431" type="line"/>
+ <point x="336" y="1431" type="line"/>
+ <point x="348" y="1353"/>
+ <point x="355" y="1260"/>
+ <point x="362" y="1073" type="curve" smooth="yes"/>
+ <point x="400" y="0" type="line"/>
+ <point x="521" y="0" type="line"/>
+ <point x="551" y="127" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apX_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apX_.glif
new file mode 100644
index 0000000..2da5787
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apX_.glif
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapX" format="2">
+ <advance width="1305"/>
+ <unicode hex="0058"/>
+ <anchor x="565" y="-100" name="L"/>
+ <anchor x="972" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="970" y="0" type="line"/>
+ <point x="1190" y="0" type="line"/>
+ <point x="1148" y="80"/>
+ <point x="1125" y="124"/>
+ <point x="1045" y="329" type="curve" smooth="yes"/>
+ <point x="611" y="1431" type="line"/>
+ <point x="386" y="1431" type="line"/>
+ <point x="430" y="1348"/>
+ <point x="462" y="1289"/>
+ <point x="541" y="1088" type="curve" smooth="yes"/>
+ </contour>
+ <contour>
+ <point x="752" y="872" type="line"/>
+ <point x="278" y="333" type="line" smooth="yes"/>
+ <point x="98" y="129"/>
+ <point x="53" y="84"/>
+ <point x="-30" y="0" type="curve"/>
+ <point x="210" y="0" type="line"/>
+ <point x="750" y="622" type="line"/>
+ </contour>
+ <contour>
+ <point x="765" y="622" type="line"/>
+ <point x="1183" y="1088" type="line" smooth="yes"/>
+ <point x="1360" y="1285"/>
+ <point x="1425" y="1355"/>
+ <point x="1506" y="1431" type="curve"/>
+ <point x="1261" y="1431" type="line"/>
+ <point x="767" y="872" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apY_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apY_.glif
new file mode 100644
index 0000000..9ec65ef
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnC_apY_.glif
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnCapY" format="2">
+ <advance width="1300"/>
+ <unicode hex="0059"/>
+ <anchor x="565" y="-100" name="L"/>
+ <anchor x="972" y="1530" name="U"/>
+ <outline>
+ <contour>
+ <point x="331" y="1431" type="line"/>
+ <point x="407" y="1285"/>
+ <point x="446" y="1173"/>
+ <point x="490" y="1044" type="curve"/>
+ <point x="661" y="549" type="line"/>
+ <point x="829" y="661" type="line"/>
+ <point x="551" y="1431" type="line"/>
+ </contour>
+ <contour>
+ <point x="1321" y="1431" type="line"/>
+ <point x="684" y="661" type="line"/>
+ <point x="796" y="549" type="line"/>
+ <point x="1215" y="1044" type="line" smooth="yes"/>
+ <point x="1322" y="1171"/>
+ <point x="1402" y="1265"/>
+ <point x="1561" y="1431" type="curve"/>
+ </contour>
+ <contour>
+ <point x="700" y="0" type="line"/>
+ <point x="704" y="78"/>
+ <point x="743" y="233"/>
+ <point x="791" y="426" type="curve" smooth="yes"/>
+ <point x="854" y="681" type="line"/>
+ <point x="664" y="681" type="line"/>
+ <point x="601" y="426" type="line" smooth="yes"/>
+ <point x="553" y="233"/>
+ <point x="514" y="78"/>
+ <point x="480" y="0" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_.glif
new file mode 100644
index 0000000..586e494
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_.glif
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmA" format="2">
+ <advance width="1107"/>
+ <unicode hex="0061"/>
+ <anchor x="860" y="0" name="H"/>
+ <anchor x="455" y="-100" name="L"/>
+ <anchor x="1065" y="0" name="O"/>
+ <anchor x="1310" y="1000" name="R"/>
+ <anchor x="755" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="972" y="0" type="line"/>
+ <point x="965" y="48"/>
+ <point x="960" y="98"/>
+ <point x="960" y="149" type="curve" smooth="yes"/>
+ <point x="960" y="214"/>
+ <point x="967" y="284"/>
+ <point x="987" y="363" type="curve"/>
+ <point x="1077" y="726" type="line"/>
+ <point x="1081" y="744"/>
+ <point x="1084" y="762"/>
+ <point x="1084" y="779" type="curve" smooth="yes"/>
+ <point x="1084" y="912"/>
+ <point x="955" y="1019"/>
+ <point x="751" y="1019" type="curve" smooth="yes"/>
+ <point x="599" y="1019"/>
+ <point x="502" y="974"/>
+ <point x="389" y="931" type="curve"/>
+ <point x="373" y="889"/>
+ <point x="343" y="783"/>
+ <point x="331" y="740" type="curve"/>
+ <point x="468" y="820"/>
+ <point x="560" y="862"/>
+ <point x="666" y="862" type="curve" smooth="yes"/>
+ <point x="798" y="862"/>
+ <point x="885" y="810"/>
+ <point x="885" y="718" type="curve" smooth="yes"/>
+ <point x="885" y="705"/>
+ <point x="884" y="691"/>
+ <point x="880" y="677" type="curve" smooth="yes"/>
+ <point x="867" y="622" type="line"/>
+ <point x="825" y="619"/>
+ <point x="661" y="605"/>
+ <point x="591" y="598" type="curve" smooth="yes"/>
+ <point x="282" y="568"/>
+ <point x="102" y="415"/>
+ <point x="102" y="233" type="curve" smooth="yes"/>
+ <point x="102" y="103"/>
+ <point x="223" y="-25"/>
+ <point x="390" y="-25" type="curve" smooth="yes"/>
+ <point x="514" y="-25"/>
+ <point x="674" y="47"/>
+ <point x="779" y="152" type="curve"/>
+ <point x="779" y="89"/>
+ <point x="787" y="31"/>
+ <point x="792" y="0" type="curve"/>
+ </contour>
+ <contour>
+ <point x="791" y="319" type="line"/>
+ <point x="674" y="191"/>
+ <point x="553" y="137"/>
+ <point x="451" y="137" type="curve" smooth="yes"/>
+ <point x="355" y="137"/>
+ <point x="290" y="192"/>
+ <point x="290" y="264" type="curve" smooth="yes"/>
+ <point x="290" y="274"/>
+ <point x="291" y="285"/>
+ <point x="294" y="296" type="curve" smooth="yes"/>
+ <point x="315" y="380"/>
+ <point x="432" y="450"/>
+ <point x="566" y="461" type="curve" smooth="yes"/>
+ <point x="631" y="466"/>
+ <point x="782" y="483"/>
+ <point x="832" y="485" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_A_cute.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_A_cute.glif
new file mode 100644
index 0000000..198d6db
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_A_cute.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmAAcute" format="2">
+ <advance width="1107"/>
+ <unicode hex="00E1"/>
+ <anchor x="860" y="0" name="H"/>
+ <anchor x="455" y="-100" name="L"/>
+ <anchor x="1065" y="0" name="O"/>
+ <anchor x="1310" y="1000" name="R"/>
+ <anchor x="889" y="1635" name="U"/>
+ <outline>
+ <component base="LtnSmA"/>
+ <component base="CombAcute" xOffset="1110"/>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_C_ircum.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_C_ircum.glif
new file mode 100644
index 0000000..f5cfb16
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_C_ircum.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmACircum" format="2">
+ <advance width="1107"/>
+ <unicode hex="00E2"/>
+ <anchor x="860" y="0" name="H"/>
+ <anchor x="455" y="-100" name="L"/>
+ <anchor x="1065" y="0" name="O"/>
+ <anchor x="1310" y="1000" name="R"/>
+ <anchor x="854" y="1635" name="U"/>
+ <outline>
+ <component base="LtnSmA"/>
+ <component base="CombCircum" xOffset="1075"/>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_D_iaer.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_D_iaer.glif
new file mode 100644
index 0000000..6f05301
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_D_iaer.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmADiaer" format="2">
+ <advance width="1107"/>
+ <unicode hex="00E4"/>
+ <anchor x="860" y="0" name="H"/>
+ <anchor x="455" y="-100" name="L"/>
+ <anchor x="1065" y="0" name="O"/>
+ <anchor x="1310" y="1000" name="R"/>
+ <anchor x="852" y="1505" name="U"/>
+ <outline>
+ <component base="LtnSmA"/>
+ <component base="CombDiaer" xOffset="1105"/>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_G_rave.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_G_rave.glif
new file mode 100644
index 0000000..9048920
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_G_rave.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmAGrave" format="2">
+ <advance width="1107"/>
+ <unicode hex="00E0"/>
+ <anchor x="860" y="0" name="H"/>
+ <anchor x="455" y="-100" name="L"/>
+ <anchor x="1065" y="0" name="O"/>
+ <anchor x="1310" y="1000" name="R"/>
+ <anchor x="889" y="1635" name="U"/>
+ <outline>
+ <component base="LtnSmA"/>
+ <component base="CombGrave" xOffset="1090"/>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_R_ingA_bv.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_R_ingA_bv.glif
new file mode 100644
index 0000000..8ada58f
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_R_ingA_bv.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmARingAbv" format="2">
+ <advance width="1107"/>
+ <unicode hex="00E5"/>
+ <anchor x="860" y="0" name="H"/>
+ <anchor x="455" y="-100" name="L"/>
+ <anchor x="1065" y="0" name="O"/>
+ <anchor x="1310" y="1000" name="R"/>
+ <anchor x="919" y="1635" name="U"/>
+ <outline>
+ <component base="LtnSmA"/>
+ <component base="CombRingAbv" xOffset="1140"/>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_T_ilde.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_T_ilde.glif
new file mode 100644
index 0000000..c29348b
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mA_T_ilde.glif
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmATilde" format="2">
+ <advance width="1107"/>
+ <unicode hex="00E3"/>
+ <anchor x="860" y="0" name="H"/>
+ <anchor x="455" y="-100" name="L"/>
+ <anchor x="1065" y="0" name="O"/>
+ <anchor x="1310" y="1000" name="R"/>
+ <anchor x="850" y="1475" name="U"/>
+ <outline>
+ <component base="LtnSmA"/>
+ <component base="CombTilde" xOffset="1140"/>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mB_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mB_.glif
new file mode 100644
index 0000000..b3a3696
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mB_.glif
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmB" format="2">
+ <advance width="1144"/>
+ <unicode hex="0062"/>
+ <anchor x="530" y="0" name="H"/>
+ <anchor x="505" y="-100" name="L"/>
+ <anchor x="1345" y="1000" name="R"/>
+ <anchor x="938" y="1635" name="U"/>
+ <outline>
+ <contour>
+ <point x="437" y="1570" type="line"/>
+ <point x="437" y="1456"/>
+ <point x="402" y="1246"/>
+ <point x="367" y="1105" type="curve" smooth="yes"/>
+ <point x="110" y="85" type="line"/>
+ <point x="198" y="44"/>
+ <point x="355" y="-25"/>
+ <point x="517" y="-25" type="curve" smooth="yes"/>
+ <point x="675" y="-25"/>
+ <point x="795" y="24"/>
+ <point x="907" y="125" type="curve" smooth="yes"/>
+ <point x="1050" y="255"/>
+ <point x="1162" y="466"/>
+ <point x="1162" y="695" type="curve" smooth="yes"/>
+ <point x="1162" y="930"/>
+ <point x="1046" y="1020"/>
+ <point x="907" y="1020" type="curve" smooth="yes"/>
+ <point x="754" y="1020"/>
+ <point x="584" y="878"/>
+ <point x="456" y="719" type="curve"/>
+ <point x="552" y="1105" type="line" smooth="yes"/>
+ <point x="600" y="1296"/>
+ <point x="627" y="1508"/>
+ <point x="627" y="1570" type="curve"/>
+ </contour>
+ <contour>
+ <point x="382" y="429" type="line"/>
+ <point x="485" y="617"/>
+ <point x="708" y="850"/>
+ <point x="822" y="850" type="curve" smooth="yes"/>
+ <point x="913" y="850"/>
+ <point x="972" y="784"/>
+ <point x="972" y="635" type="curve" smooth="yes"/>
+ <point x="972" y="469"/>
+ <point x="909" y="336"/>
+ <point x="822" y="250" type="curve" smooth="yes"/>
+ <point x="741" y="169"/>
+ <point x="638" y="125"/>
+ <point x="552" y="125" type="curve" smooth="yes"/>
+ <point x="466" y="125"/>
+ <point x="376" y="167"/>
+ <point x="325" y="200" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mC_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mC_.glif
new file mode 100644
index 0000000..f54fbe9
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mC_.glif
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmC" format="2">
+ <advance width="989"/>
+ <unicode hex="0063"/>
+ <anchor x="520" y="0" name="H"/>
+ <anchor x="495" y="-100" name="L"/>
+ <anchor x="1210" y="1000" name="R"/>
+ <anchor x="785" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="917" y="255" type="line"/>
+ <point x="811" y="179"/>
+ <point x="703" y="137"/>
+ <point x="583" y="137" type="curve" smooth="yes"/>
+ <point x="427" y="137"/>
+ <point x="331" y="239"/>
+ <point x="331" y="406" type="curve" smooth="yes"/>
+ <point x="331" y="619"/>
+ <point x="499" y="858"/>
+ <point x="742" y="858" type="curve" smooth="yes"/>
+ <point x="845" y="858"/>
+ <point x="924" y="824"/>
+ <point x="998" y="760" type="curve"/>
+ <point x="1077" y="936" type="line"/>
+ <point x="1016" y="985"/>
+ <point x="902" y="1020"/>
+ <point x="789" y="1020" type="curve" smooth="yes"/>
+ <point x="420" y="1020"/>
+ <point x="139" y="737"/>
+ <point x="139" y="381" type="curve" smooth="yes"/>
+ <point x="139" y="130"/>
+ <point x="309" y="-25"/>
+ <point x="532" y="-25" type="curve" smooth="yes"/>
+ <point x="682" y="-25"/>
+ <point x="785" y="9"/>
+ <point x="904" y="83" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mD_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mD_.glif
new file mode 100644
index 0000000..4ea9ea1
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mD_.glif
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmD" format="2">
+ <advance width="1197"/>
+ <unicode hex="0064"/>
+ <anchor x="545" y="0" name="H"/>
+ <anchor x="520" y="-100" name="L"/>
+ <anchor x="1380" y="1000" name="R"/>
+ <anchor x="953" y="1635" name="U"/>
+ <outline>
+ <contour>
+ <point x="1144" y="1570" type="line"/>
+ <point x="1144" y="1456"/>
+ <point x="1114" y="1327"/>
+ <point x="1079" y="1175" type="curve" smooth="yes"/>
+ <point x="1024" y="935" type="line"/>
+ <point x="957" y="978"/>
+ <point x="854" y="1020"/>
+ <point x="759" y="1020" type="curve" smooth="yes"/>
+ <point x="650" y="1020"/>
+ <point x="534" y="979"/>
+ <point x="429" y="895" type="curve" smooth="yes"/>
+ <point x="262" y="761"/>
+ <point x="139" y="532"/>
+ <point x="139" y="288" type="curve" smooth="yes"/>
+ <point x="139" y="94"/>
+ <point x="250" y="-25"/>
+ <point x="424" y="-25" type="curve" smooth="yes"/>
+ <point x="563" y="-25"/>
+ <point x="791" y="141"/>
+ <point x="899" y="305" type="curve"/>
+ <point x="875" y="196"/>
+ <point x="869" y="93"/>
+ <point x="869" y="0" type="curve"/>
+ <point x="1052" y="0" type="line"/>
+ <point x="1048" y="23"/>
+ <point x="1047" y="53"/>
+ <point x="1047" y="90" type="curve" smooth="yes"/>
+ <point x="1047" y="190"/>
+ <point x="1063" y="340"/>
+ <point x="1107" y="520" type="curve" smooth="yes"/>
+ <point x="1267" y="1175" type="line" smooth="yes"/>
+ <point x="1310" y="1351"/>
+ <point x="1337" y="1475"/>
+ <point x="1337" y="1570" type="curve"/>
+ </contour>
+ <contour>
+ <point x="930" y="545" type="line"/>
+ <point x="846" y="370"/>
+ <point x="592" y="130"/>
+ <point x="479" y="130" type="curve" smooth="yes"/>
+ <point x="374" y="130"/>
+ <point x="330" y="195"/>
+ <point x="330" y="316" type="curve" smooth="yes"/>
+ <point x="330" y="460"/>
+ <point x="397" y="649"/>
+ <point x="509" y="760" type="curve" smooth="yes"/>
+ <point x="572" y="822"/>
+ <point x="643" y="855"/>
+ <point x="734" y="855" type="curve" smooth="yes"/>
+ <point x="835" y="855"/>
+ <point x="898" y="832"/>
+ <point x="984" y="780" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mE_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mE_.glif
new file mode 100644
index 0000000..a3a6490
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mE_.glif
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmE" format="2">
+ <advance width="1042"/>
+ <unicode hex="0065"/>
+ <anchor x="485" y="0" name="H"/>
+ <anchor x="484" y="-100" name="L"/>
+ <anchor x="840" y="0" name="O"/>
+ <anchor x="1285" y="1000" name="R"/>
+ <anchor x="784" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="967" y="270" type="line"/>
+ <point x="854" y="189"/>
+ <point x="700" y="135"/>
+ <point x="567" y="135" type="curve" smooth="yes"/>
+ <point x="386" y="135"/>
+ <point x="317" y="263"/>
+ <point x="317" y="420" type="curve" smooth="yes"/>
+ <point x="317" y="686"/>
+ <point x="522" y="872"/>
+ <point x="720" y="872" type="curve" smooth="yes"/>
+ <point x="813" y="872"/>
+ <point x="883" y="823"/>
+ <point x="883" y="753" type="curve" smooth="yes"/>
+ <point x="883" y="660"/>
+ <point x="766" y="590"/>
+ <point x="539" y="590" type="curve" smooth="yes"/>
+ <point x="468" y="590"/>
+ <point x="382" y="596"/>
+ <point x="279" y="610" type="curve"/>
+ <point x="279" y="477" type="line"/>
+ <point x="391" y="461"/>
+ <point x="487" y="453"/>
+ <point x="569" y="453" type="curve" smooth="yes"/>
+ <point x="931" y="453"/>
+ <point x="1077" y="609"/>
+ <point x="1077" y="791" type="curve" smooth="yes"/>
+ <point x="1077" y="899"/>
+ <point x="986" y="1020"/>
+ <point x="772" y="1020" type="curve" smooth="yes"/>
+ <point x="399" y="1020"/>
+ <point x="137" y="710"/>
+ <point x="137" y="380" type="curve" smooth="yes"/>
+ <point x="137" y="147"/>
+ <point x="258" y="-25"/>
+ <point x="523" y="-25" type="curve" smooth="yes"/>
+ <point x="689" y="-25"/>
+ <point x="849" y="26"/>
+ <point x="955" y="83" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mF_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mF_.glif
new file mode 100644
index 0000000..ede52a9
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mF_.glif
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmF" format="2">
+ <advance width="756"/>
+ <unicode hex="0066"/>
+ <anchor x="290" y="0" name="H"/>
+ <anchor x="315" y="-100" name="L"/>
+ <anchor x="908" y="1635" name="U"/>
+ <outline>
+ <contour>
+ <point x="180" y="833" type="line"/>
+ <point x="835" y="833" type="line"/>
+ <point x="871" y="975" type="line"/>
+ <point x="216" y="975" type="line"/>
+ </contour>
+ <contour>
+ <point x="1106" y="1519" type="line"/>
+ <point x="1062" y="1555"/>
+ <point x="981" y="1588"/>
+ <point x="903" y="1588" type="curve" smooth="yes"/>
+ <point x="687" y="1588"/>
+ <point x="533" y="1478"/>
+ <point x="448" y="1147" type="curve" smooth="yes"/>
+ <point x="403" y="972"/>
+ <point x="244" y="334"/>
+ <point x="223" y="0" type="curve"/>
+ <point x="436" y="0" type="line"/>
+ <point x="430" y="28"/>
+ <point x="427" y="66"/>
+ <point x="427" y="110" type="curve" smooth="yes"/>
+ <point x="427" y="213"/>
+ <point x="447" y="351"/>
+ <point x="476" y="484" type="curve" smooth="yes"/>
+ <point x="510" y="641"/>
+ <point x="558" y="846"/>
+ <point x="641" y="1186" type="curve" smooth="yes"/>
+ <point x="682" y="1353"/>
+ <point x="758" y="1421"/>
+ <point x="862" y="1421" type="curve" smooth="yes"/>
+ <point x="920" y="1421"/>
+ <point x="988" y="1392"/>
+ <point x="1022" y="1362" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mG_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mG_.glif
new file mode 100644
index 0000000..8931f8d
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mG_.glif
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmG" format="2">
+ <advance width="1075"/>
+ <unicode hex="0067"/>
+ <anchor x="368" y="-465" name="H"/>
+ <anchor x="351" y="-535" name="L"/>
+ <anchor x="1285" y="1000" name="R"/>
+ <anchor x="730" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="360" y="389" type="line"/>
+ <point x="277" y="352"/>
+ <point x="168" y="266"/>
+ <point x="168" y="176" type="curve" smooth="yes"/>
+ <point x="168" y="96"/>
+ <point x="246" y="33"/>
+ <point x="483" y="-5" type="curve" smooth="yes"/>
+ <point x="707" y="-41"/>
+ <point x="781" y="-94"/>
+ <point x="781" y="-151" type="curve" smooth="yes"/>
+ <point x="781" y="-256"/>
+ <point x="580" y="-353"/>
+ <point x="411" y="-353" type="curve" smooth="yes"/>
+ <point x="202" y="-353"/>
+ <point x="104" y="-271"/>
+ <point x="104" y="-196" type="curve" smooth="yes"/>
+ <point x="104" y="-189"/>
+ <point x="104" y="-183"/>
+ <point x="106" y="-176" type="curve" smooth="yes"/>
+ <point x="120" y="-119"/>
+ <point x="170" y="-55"/>
+ <point x="409" y="20" type="curve"/>
+ <point x="410" y="48"/>
+ <point x="248" y="73"/>
+ <point x="248" y="73" type="curve"/>
+ <point x="53" y="12"/>
+ <point x="-51" y="-77"/>
+ <point x="-78" y="-186" type="curve" smooth="yes"/>
+ <point x="-82" y="-201"/>
+ <point x="-84" y="-217"/>
+ <point x="-84" y="-231" type="curve" smooth="yes"/>
+ <point x="-84" y="-396"/>
+ <point x="158" y="-495"/>
+ <point x="371" y="-495" type="curve" smooth="yes"/>
+ <point x="632" y="-495"/>
+ <point x="972" y="-360"/>
+ <point x="972" y="-125" type="curve" smooth="yes"/>
+ <point x="972" y="0"/>
+ <point x="849" y="90"/>
+ <point x="619" y="127" type="curve" smooth="yes"/>
+ <point x="403" y="162"/>
+ <point x="341" y="184"/>
+ <point x="341" y="218" type="curve" smooth="yes"/>
+ <point x="341" y="263"/>
+ <point x="447" y="325"/>
+ <point x="522" y="342" type="curve"/>
+ </contour>
+ <contour>
+ <point x="1244" y="1019" type="line"/>
+ <point x="1143" y="1012"/>
+ <point x="1002" y="977"/>
+ <point x="899" y="921" type="curve"/>
+ <point x="936" y="809" type="line"/>
+ <point x="1037" y="846"/>
+ <point x="1121" y="860"/>
+ <point x="1194" y="862" type="curve"/>
+ </contour>
+ <contour>
+ <point x="212" y="613" type="curve" smooth="yes"/>
+ <point x="212" y="449"/>
+ <point x="356" y="319"/>
+ <point x="554" y="319" type="curve" smooth="yes"/>
+ <point x="791" y="319"/>
+ <point x="1030" y="495"/>
+ <point x="1030" y="729" type="curve" smooth="yes"/>
+ <point x="1030" y="894"/>
+ <point x="887" y="1019"/>
+ <point x="689" y="1019" type="curve" smooth="yes"/>
+ <point x="441" y="1019"/>
+ <point x="212" y="847"/>
+ </contour>
+ <contour>
+ <point x="857" y="704" type="curve" smooth="yes"/>
+ <point x="857" y="555"/>
+ <point x="712" y="456"/>
+ <point x="578" y="456" type="curve" smooth="yes"/>
+ <point x="463" y="456"/>
+ <point x="385" y="530"/>
+ <point x="385" y="628" type="curve" smooth="yes"/>
+ <point x="385" y="643"/>
+ <point x="387" y="660"/>
+ <point x="391" y="676" type="curve" smooth="yes"/>
+ <point x="421" y="797"/>
+ <point x="530" y="877"/>
+ <point x="663" y="877" type="curve" smooth="yes"/>
+ <point x="779" y="877"/>
+ <point x="857" y="802"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mH_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mH_.glif
new file mode 100644
index 0000000..08afbac
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mH_.glif
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmH" format="2">
+ <advance width="1185"/>
+ <unicode hex="0068"/>
+ <anchor x="190" y="0" name="H"/>
+ <anchor x="550" y="-100" name="L"/>
+ <anchor x="933" y="1635" name="U"/>
+ <outline>
+ <contour>
+ <point x="1055" y="0" type="line"/>
+ <point x="1047" y="30"/>
+ <point x="1043" y="65"/>
+ <point x="1043" y="102" type="curve" smooth="yes"/>
+ <point x="1043" y="143"/>
+ <point x="1048" y="188"/>
+ <point x="1055" y="238" type="curve" smooth="yes"/>
+ <point x="1069" y="327"/>
+ <point x="1170" y="636"/>
+ <point x="1170" y="745" type="curve" smooth="yes"/>
+ <point x="1170" y="917"/>
+ <point x="1095" y="1020"/>
+ <point x="930" y="1020" type="curve" smooth="yes"/>
+ <point x="760" y="1020"/>
+ <point x="591" y="877"/>
+ <point x="475" y="723" type="curve"/>
+ <point x="571" y="1105" type="line" smooth="yes"/>
+ <point x="609" y="1259"/>
+ <point x="645" y="1482"/>
+ <point x="645" y="1570" type="curve"/>
+ <point x="455" y="1570" type="line"/>
+ <point x="455" y="1456"/>
+ <point x="423" y="1257"/>
+ <point x="385" y="1105" type="curve" smooth="yes"/>
+ <point x="110" y="0" type="line"/>
+ <point x="295" y="0" type="line"/>
+ <point x="397" y="408" type="line"/>
+ <point x="492" y="612"/>
+ <point x="717" y="850"/>
+ <point x="840" y="850" type="curve" smooth="yes"/>
+ <point x="937" y="850"/>
+ <point x="970" y="798"/>
+ <point x="970" y="680" type="curve" smooth="yes"/>
+ <point x="970" y="592"/>
+ <point x="886" y="319"/>
+ <point x="872" y="203" type="curve" smooth="yes"/>
+ <point x="867" y="158"/>
+ <point x="864" y="115"/>
+ <point x="864" y="77" type="curve" smooth="yes"/>
+ <point x="864" y="48"/>
+ <point x="866" y="21"/>
+ <point x="870" y="0" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mI_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mI_.glif
new file mode 100644
index 0000000..65ed550
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mI_.glif
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmI" format="2">
+ <advance width="554"/>
+ <unicode hex="0069"/>
+ <anchor x="235" y="0" name="H"/>
+ <anchor x="250" y="-100" name="L"/>
+ <anchor x="455" y="0" name="O"/>
+ <anchor x="745" y="1000" name="R"/>
+ <anchor x="472" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="361" y="1297" type="curve" smooth="yes"/>
+ <point x="361" y="1237"/>
+ <point x="404" y="1186"/>
+ <point x="467" y="1186" type="curve" smooth="yes"/>
+ <point x="552" y="1186"/>
+ <point x="624" y="1259"/>
+ <point x="624" y="1338" type="curve" smooth="yes"/>
+ <point x="624" y="1399"/>
+ <point x="578" y="1450"/>
+ <point x="513" y="1450" type="curve" smooth="yes"/>
+ <point x="428" y="1450"/>
+ <point x="361" y="1375"/>
+ </contour>
+ <contour>
+ <point x="335" y="1000" type="line"/>
+ <point x="335" y="886"/>
+ <point x="286" y="688"/>
+ <point x="246" y="537" type="curve" smooth="yes"/>
+ <point x="207" y="388" type="line" smooth="yes"/>
+ <point x="180" y="284"/>
+ <point x="165" y="172"/>
+ <point x="165" y="87" type="curve" smooth="yes"/>
+ <point x="165" y="53"/>
+ <point x="167" y="24"/>
+ <point x="172" y="0" type="curve"/>
+ <point x="372" y="0" type="line"/>
+ <point x="365" y="37"/>
+ <point x="360" y="85"/>
+ <point x="360" y="136" type="curve" smooth="yes"/>
+ <point x="360" y="208"/>
+ <point x="368" y="287"/>
+ <point x="386" y="357" type="curve" smooth="yes"/>
+ <point x="431" y="536" type="line" smooth="yes"/>
+ <point x="476" y="712"/>
+ <point x="525" y="912"/>
+ <point x="525" y="1000" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mJ_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mJ_.glif
new file mode 100644
index 0000000..e9e18b8
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mJ_.glif
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmJ" format="2">
+ <advance width="602"/>
+ <unicode hex="006A"/>
+ <anchor x="-60" y="-500" name="L"/>
+ <anchor x="510" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="370" y="1000" type="line"/>
+ <point x="370" y="856"/>
+ <point x="288" y="374"/>
+ <point x="214" y="77" type="curve" smooth="yes"/>
+ <point x="152" y="-173"/>
+ <point x="29" y="-295"/>
+ <point x="-77" y="-295" type="curve" smooth="yes"/>
+ <point x="-133" y="-295"/>
+ <point x="-217" y="-264"/>
+ <point x="-253" y="-229" type="curve"/>
+ <point x="-328" y="-397" type="line"/>
+ <point x="-278" y="-437"/>
+ <point x="-170" y="-465"/>
+ <point x="-114" y="-465" type="curve" smooth="yes"/>
+ <point x="103" y="-465"/>
+ <point x="303" y="-314"/>
+ <point x="396" y="66" type="curve" smooth="yes"/>
+ <point x="455" y="307"/>
+ <point x="560" y="872"/>
+ <point x="560" y="1000" type="curve"/>
+ </contour>
+ <contour>
+ <point x="397" y="1297" type="curve" smooth="yes"/>
+ <point x="397" y="1237"/>
+ <point x="440" y="1186"/>
+ <point x="503" y="1186" type="curve" smooth="yes"/>
+ <point x="588" y="1186"/>
+ <point x="660" y="1259"/>
+ <point x="660" y="1338" type="curve" smooth="yes"/>
+ <point x="660" y="1399"/>
+ <point x="614" y="1450"/>
+ <point x="549" y="1450" type="curve" smooth="yes"/>
+ <point x="464" y="1450"/>
+ <point x="397" y="1375"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mK_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mK_.glif
new file mode 100644
index 0000000..28fbc71
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mK_.glif
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmK" format="2">
+ <advance width="1059"/>
+ <unicode hex="006B"/>
+ <anchor x="840" y="0" name="H"/>
+ <anchor x="537" y="-100" name="L"/>
+ <anchor x="1225" y="1000" name="R"/>
+ <anchor x="920" y="1635" name="U"/>
+ <outline>
+ <contour>
+ <point x="295" y="0" type="line"/>
+ <point x="570" y="1105" type="line" smooth="yes"/>
+ <point x="614" y="1280"/>
+ <point x="645" y="1482"/>
+ <point x="645" y="1570" type="curve"/>
+ <point x="455" y="1570" type="line"/>
+ <point x="455" y="1456"/>
+ <point x="424" y="1259"/>
+ <point x="386" y="1107" type="curve" smooth="yes"/>
+ <point x="338" y="915"/>
+ <point x="110" y="0"/>
+ <point x="110" y="0" type="curve"/>
+ </contour>
+ <contour>
+ <point x="909" y="1000" type="line"/>
+ <point x="885" y="863"/>
+ <point x="654" y="700"/>
+ <point x="379" y="539" type="curve"/>
+ <point x="386" y="540"/>
+ <point x="393" y="540"/>
+ <point x="400" y="540" type="curve" smooth="yes"/>
+ <point x="467" y="540"/>
+ <point x="559" y="514"/>
+ <point x="559" y="514" type="curve"/>
+ <point x="902" y="702"/>
+ <point x="1134" y="884"/>
+ <point x="1134" y="1000" type="curve"/>
+ </contour>
+ <contour>
+ <point x="1010" y="0" type="line"/>
+ <point x="863" y="238"/>
+ <point x="718" y="600"/>
+ <point x="527" y="600" type="curve"/>
+ <point x="385" y="529" type="line"/>
+ <point x="540" y="529"/>
+ <point x="667" y="246"/>
+ <point x="775" y="0" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mL_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mL_.glif
new file mode 100644
index 0000000..06d68fd
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mL_.glif
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmL" format="2">
+ <advance width="575"/>
+ <unicode hex="006C"/>
+ <anchor x="230" y="0" name="H"/>
+ <anchor x="255" y="-100" name="L"/>
+ <anchor x="740" y="1000" name="R"/>
+ <anchor x="630" y="1635" name="U"/>
+ <outline>
+ <contour>
+ <point x="465" y="1570" type="line"/>
+ <point x="465" y="1456"/>
+ <point x="434" y="1259"/>
+ <point x="396" y="1107" type="curve" smooth="yes"/>
+ <point x="241" y="489" type="line" smooth="yes"/>
+ <point x="204" y="343"/>
+ <point x="186" y="220"/>
+ <point x="186" y="104" type="curve" smooth="yes"/>
+ <point x="186" y="69"/>
+ <point x="188" y="34"/>
+ <point x="191" y="0" type="curve"/>
+ <point x="391" y="0" type="line"/>
+ <point x="386" y="32"/>
+ <point x="384" y="70"/>
+ <point x="384" y="112" type="curve" smooth="yes"/>
+ <point x="384" y="230"/>
+ <point x="402" y="380"/>
+ <point x="436" y="517" type="curve" smooth="yes"/>
+ <point x="580" y="1105" type="line" smooth="yes"/>
+ <point x="623" y="1280"/>
+ <point x="655" y="1482"/>
+ <point x="655" y="1570" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mM_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mM_.glif
new file mode 100644
index 0000000..a6b80db
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mM_.glif
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmM" format="2">
+ <advance width="1680"/>
+ <unicode hex="006D"/>
+ <anchor x="805" y="0" name="H"/>
+ <anchor x="780" y="-100" name="L"/>
+ <anchor x="1080" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="1520" y="0" type="line"/>
+ <point x="1512" y="30"/>
+ <point x="1510" y="65"/>
+ <point x="1510" y="102" type="curve" smooth="yes"/>
+ <point x="1510" y="143"/>
+ <point x="1515" y="188"/>
+ <point x="1522" y="238" type="curve" smooth="yes"/>
+ <point x="1536" y="327"/>
+ <point x="1655" y="691"/>
+ <point x="1655" y="800" type="curve" smooth="yes"/>
+ <point x="1655" y="930"/>
+ <point x="1594" y="1020"/>
+ <point x="1445" y="1020" type="curve" smooth="yes"/>
+ <point x="1292" y="1020"/>
+ <point x="1124" y="867"/>
+ <point x="1026" y="680" type="curve"/>
+ <point x="1030" y="704"/>
+ <point x="1045" y="778"/>
+ <point x="1045" y="800" type="curve" smooth="yes"/>
+ <point x="1045" y="932"/>
+ <point x="982" y="1020"/>
+ <point x="860" y="1020" type="curve" smooth="yes"/>
+ <point x="717" y="1020"/>
+ <point x="563" y="879"/>
+ <point x="446" y="680" type="curve"/>
+ <point x="466" y="753"/>
+ <point x="476" y="880"/>
+ <point x="476" y="961" type="curve" smooth="yes"/>
+ <point x="476" y="976"/>
+ <point x="476" y="989"/>
+ <point x="475" y="1000" type="curve"/>
+ <point x="295" y="1000" type="line"/>
+ <point x="296" y="983"/>
+ <point x="296" y="964"/>
+ <point x="296" y="945" type="curve" smooth="yes"/>
+ <point x="296" y="825"/>
+ <point x="283" y="680"/>
+ <point x="262" y="595" type="curve" smooth="yes"/>
+ <point x="115" y="0" type="line"/>
+ <point x="300" y="0" type="line"/>
+ <point x="389" y="359" type="line"/>
+ <point x="475" y="573"/>
+ <point x="685" y="850"/>
+ <point x="775" y="850" type="curve" smooth="yes"/>
+ <point x="833" y="850"/>
+ <point x="865" y="813"/>
+ <point x="865" y="720" type="curve" smooth="yes"/>
+ <point x="865" y="679"/>
+ <point x="846" y="583"/>
+ <point x="822" y="486" type="curve" smooth="yes"/>
+ <point x="700" y="0" type="line"/>
+ <point x="885" y="0" type="line"/>
+ <point x="974" y="359" type="line"/>
+ <point x="1032" y="531"/>
+ <point x="1242" y="850"/>
+ <point x="1357" y="850" type="curve" smooth="yes"/>
+ <point x="1425" y="850"/>
+ <point x="1457" y="813"/>
+ <point x="1457" y="720" type="curve" smooth="yes"/>
+ <point x="1457" y="632"/>
+ <point x="1349" y="319"/>
+ <point x="1335" y="203" type="curve" smooth="yes"/>
+ <point x="1330" y="158"/>
+ <point x="1327" y="115"/>
+ <point x="1327" y="77" type="curve" smooth="yes"/>
+ <point x="1327" y="48"/>
+ <point x="1331" y="21"/>
+ <point x="1335" y="0" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mN_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mN_.glif
new file mode 100644
index 0000000..1f38f20
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mN_.glif
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmN" format="2">
+ <advance width="1195"/>
+ <unicode hex="006E"/>
+ <anchor x="540" y="0" name="H"/>
+ <anchor x="565" y="-100" name="L"/>
+ <anchor x="815" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="1060" y="0" type="line"/>
+ <point x="1052" y="30"/>
+ <point x="1050" y="65"/>
+ <point x="1050" y="102" type="curve" smooth="yes"/>
+ <point x="1050" y="143"/>
+ <point x="1055" y="188"/>
+ <point x="1062" y="238" type="curve" smooth="yes"/>
+ <point x="1075" y="327"/>
+ <point x="1175" y="636"/>
+ <point x="1175" y="745" type="curve" smooth="yes"/>
+ <point x="1175" y="917"/>
+ <point x="1100" y="1020"/>
+ <point x="935" y="1020" type="curve" smooth="yes"/>
+ <point x="755" y="1020"/>
+ <point x="581" y="870"/>
+ <point x="445" y="672" type="curve"/>
+ <point x="463" y="740"/>
+ <point x="477" y="873"/>
+ <point x="477" y="957" type="curve" smooth="yes"/>
+ <point x="477" y="973"/>
+ <point x="476" y="988"/>
+ <point x="475" y="1000" type="curve"/>
+ <point x="295" y="1000" type="line"/>
+ <point x="295" y="961" type="line" smooth="yes"/>
+ <point x="295" y="833"/>
+ <point x="283" y="679"/>
+ <point x="262" y="595" type="curve" smooth="yes"/>
+ <point x="115" y="0" type="line"/>
+ <point x="300" y="0" type="line"/>
+ <point x="392" y="370" type="line"/>
+ <point x="478" y="573"/>
+ <point x="708" y="850"/>
+ <point x="835" y="850" type="curve" smooth="yes"/>
+ <point x="927" y="850"/>
+ <point x="975" y="798"/>
+ <point x="975" y="680" type="curve" smooth="yes"/>
+ <point x="975" y="592"/>
+ <point x="888" y="319"/>
+ <point x="875" y="203" type="curve" smooth="yes"/>
+ <point x="870" y="158"/>
+ <point x="867" y="115"/>
+ <point x="867" y="77" type="curve" smooth="yes"/>
+ <point x="867" y="48"/>
+ <point x="871" y="21"/>
+ <point x="875" y="0" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mO_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mO_.glif
new file mode 100644
index 0000000..bec7b9e
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mO_.glif
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmO" format="2">
+ <advance width="1133"/>
+ <unicode hex="006F"/>
+ <anchor x="510" y="0" name="H"/>
+ <anchor x="505" y="-100" name="L"/>
+ <anchor x="800" y="0" name="O"/>
+ <anchor x="1330" y="1000" name="R"/>
+ <anchor x="785" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="142" y="344" type="curve" smooth="yes"/>
+ <point x="142" y="114"/>
+ <point x="306" y="-25"/>
+ <point x="530" y="-25" type="curve" smooth="yes"/>
+ <point x="896" y="-25"/>
+ <point x="1138" y="314"/>
+ <point x="1138" y="648" type="curve" smooth="yes"/>
+ <point x="1138" y="879"/>
+ <point x="985" y="1020"/>
+ <point x="761" y="1020" type="curve" smooth="yes"/>
+ <point x="387" y="1020"/>
+ <point x="142" y="677"/>
+ </contour>
+ <contour>
+ <point x="721" y="862" type="curve" smooth="yes"/>
+ <point x="859" y="862"/>
+ <point x="947" y="767"/>
+ <point x="947" y="611" type="curve" smooth="yes"/>
+ <point x="947" y="391"/>
+ <point x="795" y="132"/>
+ <point x="559" y="132" type="curve" smooth="yes"/>
+ <point x="421" y="132"/>
+ <point x="333" y="226"/>
+ <point x="333" y="380" type="curve" smooth="yes"/>
+ <point x="333" y="599"/>
+ <point x="486" y="862"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mP_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mP_.glif
new file mode 100644
index 0000000..f9e06b1
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mP_.glif
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmP" format="2">
+ <advance width="1185"/>
+ <unicode hex="0070"/>
+ <anchor x="105" y="-435" name="H"/>
+ <anchor x="405" y="-500" name="L"/>
+ <anchor x="1360" y="1000" name="R"/>
+ <anchor x="805" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="215" y="-480" type="line"/>
+ <point x="215" y="-388"/>
+ <point x="229" y="-282"/>
+ <point x="255" y="-175" type="curve" smooth="yes"/>
+ <point x="320" y="85" type="line"/>
+ <point x="399" y="20"/>
+ <point x="468" y="-25"/>
+ <point x="575" y="-25" type="curve" smooth="yes"/>
+ <point x="685" y="-25"/>
+ <point x="797" y="9"/>
+ <point x="895" y="85" type="curve" smooth="yes"/>
+ <point x="1063" y="215"/>
+ <point x="1185" y="438"/>
+ <point x="1185" y="680" type="curve" smooth="yes"/>
+ <point x="1185" y="878"/>
+ <point x="1101" y="1020"/>
+ <point x="920" y="1020" type="curve" smooth="yes"/>
+ <point x="757" y="1020"/>
+ <point x="559" y="842"/>
+ <point x="452" y="680" type="curve"/>
+ <point x="468" y="760"/>
+ <point x="477" y="860"/>
+ <point x="477" y="940" type="curve" smooth="yes"/>
+ <point x="477" y="962"/>
+ <point x="477" y="982"/>
+ <point x="475" y="1000" type="curve"/>
+ <point x="295" y="1000" type="line"/>
+ <point x="295" y="971" type="line" smooth="yes"/>
+ <point x="295" y="819"/>
+ <point x="273" y="625"/>
+ <point x="235" y="475" type="curve" smooth="yes"/>
+ <point x="70" y="-175" type="line" smooth="yes"/>
+ <point x="43" y="-281"/>
+ <point x="20" y="-398"/>
+ <point x="20" y="-480" type="curve"/>
+ </contour>
+ <contour>
+ <point x="407" y="432" type="line"/>
+ <point x="544" y="656"/>
+ <point x="732" y="850"/>
+ <point x="840" y="850" type="curve" smooth="yes"/>
+ <point x="939" y="850"/>
+ <point x="990" y="763"/>
+ <point x="990" y="630" type="curve" smooth="yes"/>
+ <point x="990" y="491"/>
+ <point x="926" y="322"/>
+ <point x="815" y="220" type="curve" smooth="yes"/>
+ <point x="759" y="168"/>
+ <point x="693" y="135"/>
+ <point x="615" y="135" type="curve" smooth="yes"/>
+ <point x="523" y="135"/>
+ <point x="479" y="161"/>
+ <point x="365" y="255" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mQ_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mQ_.glif
new file mode 100644
index 0000000..58d9f87
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mQ_.glif
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmQ" format="2">
+ <advance width="1115"/>
+ <unicode hex="0071"/>
+ <anchor x="370" y="-500" name="L"/>
+ <anchor x="1320" y="1000" name="R"/>
+ <anchor x="770" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="843" y="-480" type="line"/>
+ <point x="843" y="-391"/>
+ <point x="858" y="-294"/>
+ <point x="885" y="-185" type="curve" smooth="yes"/>
+ <point x="1165" y="945" type="line"/>
+ <point x="1066" y="980"/>
+ <point x="946" y="1020"/>
+ <point x="825" y="1020" type="curve" smooth="yes"/>
+ <point x="675" y="1020"/>
+ <point x="550" y="977"/>
+ <point x="440" y="890" type="curve" smooth="yes"/>
+ <point x="260" y="747"/>
+ <point x="135" y="505"/>
+ <point x="135" y="285" type="curve" smooth="yes"/>
+ <point x="135" y="73"/>
+ <point x="261" y="-25"/>
+ <point x="380" y="-25" type="curve" smooth="yes"/>
+ <point x="524" y="-25"/>
+ <point x="751" y="172"/>
+ <point x="825" y="300" type="curve"/>
+ <point x="693" y="-180" type="line" smooth="yes"/>
+ <point x="662" y="-294"/>
+ <point x="648" y="-414"/>
+ <point x="648" y="-480" type="curve"/>
+ </contour>
+ <contour>
+ <point x="885" y="565" type="line"/>
+ <point x="807" y="413"/>
+ <point x="550" y="140"/>
+ <point x="455" y="140" type="curve" smooth="yes"/>
+ <point x="376" y="140"/>
+ <point x="330" y="199"/>
+ <point x="330" y="330" type="curve" smooth="yes"/>
+ <point x="330" y="481"/>
+ <point x="400" y="658"/>
+ <point x="515" y="760" type="curve" smooth="yes"/>
+ <point x="580" y="817"/>
+ <point x="658" y="855"/>
+ <point x="750" y="855" type="curve" smooth="yes"/>
+ <point x="811" y="855"/>
+ <point x="893" y="840"/>
+ <point x="947" y="817" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mR_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mR_.glif
new file mode 100644
index 0000000..8037612
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mR_.glif
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmR" format="2">
+ <advance width="910"/>
+ <unicode hex="0072"/>
+ <anchor x="210" y="0" name="H"/>
+ <anchor x="220" y="-100" name="L"/>
+ <anchor x="670" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="300" y="0" type="line"/>
+ <point x="402" y="415" type="line"/>
+ <point x="502" y="602"/>
+ <point x="703" y="850"/>
+ <point x="785" y="850" type="curve" smooth="yes"/>
+ <point x="831" y="850"/>
+ <point x="855" y="801"/>
+ <point x="855" y="740" type="curve" smooth="yes"/>
+ <point x="855" y="715"/>
+ <point x="852" y="689"/>
+ <point x="845" y="660" type="curve"/>
+ <point x="1010" y="690" type="line"/>
+ <point x="1022" y="737"/>
+ <point x="1030" y="783"/>
+ <point x="1030" y="825" type="curve" smooth="yes"/>
+ <point x="1030" y="935"/>
+ <point x="986" y="1020"/>
+ <point x="865" y="1020" type="curve" smooth="yes"/>
+ <point x="735" y="1020"/>
+ <point x="575" y="867"/>
+ <point x="445" y="675" type="curve"/>
+ <point x="467" y="773"/>
+ <point x="475" y="929"/>
+ <point x="475" y="1000" type="curve"/>
+ <point x="295" y="1000" type="line"/>
+ <point x="295" y="961" type="line" smooth="yes"/>
+ <point x="295" y="833"/>
+ <point x="283" y="679"/>
+ <point x="262" y="595" type="curve" smooth="yes"/>
+ <point x="115" y="0" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mS_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mS_.glif
new file mode 100644
index 0000000..848ddda
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mS_.glif
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmS" format="2">
+ <advance width="945"/>
+ <unicode hex="0073"/>
+ <anchor x="435" y="0" name="H"/>
+ <anchor x="440" y="-100" name="L"/>
+ <anchor x="710" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="990" y="941" type="line"/>
+ <point x="930" y="978"/>
+ <point x="815" y="1020"/>
+ <point x="640" y="1020" type="curve" smooth="yes"/>
+ <point x="384" y="1020"/>
+ <point x="230" y="881"/>
+ <point x="230" y="716" type="curve" smooth="yes"/>
+ <point x="230" y="614"/>
+ <point x="320" y="533"/>
+ <point x="466" y="461" type="curve" smooth="yes"/>
+ <point x="638" y="376"/>
+ <point x="700" y="333"/>
+ <point x="700" y="265" type="curve" smooth="yes"/>
+ <point x="700" y="188"/>
+ <point x="621" y="132"/>
+ <point x="532" y="132" type="curve" smooth="yes"/>
+ <point x="376" y="132"/>
+ <point x="244" y="216"/>
+ <point x="159" y="325" type="curve"/>
+ <point x="71" y="158" type="line"/>
+ <point x="160" y="60"/>
+ <point x="296" y="-25"/>
+ <point x="488" y="-25" type="curve" smooth="yes"/>
+ <point x="713" y="-25"/>
+ <point x="891" y="106"/>
+ <point x="891" y="306" type="curve" smooth="yes"/>
+ <point x="891" y="432"/>
+ <point x="774" y="515"/>
+ <point x="626" y="593" type="curve" smooth="yes"/>
+ <point x="476" y="672"/>
+ <point x="418" y="695"/>
+ <point x="418" y="753" type="curve" smooth="yes"/>
+ <point x="418" y="822"/>
+ <point x="494" y="862"/>
+ <point x="619" y="862" type="curve" smooth="yes"/>
+ <point x="743" y="862"/>
+ <point x="854" y="808"/>
+ <point x="911" y="769" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mT_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mT_.glif
new file mode 100644
index 0000000..0eddfe9
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mT_.glif
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmT" format="2">
+ <advance width="815"/>
+ <unicode hex="0074"/>
+ <anchor x="455" y="0" name="H"/>
+ <anchor x="390" y="-100" name="L"/>
+ <anchor x="1025" y="1000" name="R"/>
+ <anchor x="605" y="1360" name="U"/>
+ <outline>
+ <contour>
+ <point x="752" y="211" type="line"/>
+ <point x="665" y="169"/>
+ <point x="593" y="134"/>
+ <point x="527" y="134" type="curve" smooth="yes"/>
+ <point x="448" y="134"/>
+ <point x="425" y="188"/>
+ <point x="425" y="247" type="curve" smooth="yes"/>
+ <point x="425" y="274"/>
+ <point x="429" y="301"/>
+ <point x="434" y="326" type="curve" smooth="yes"/>
+ <point x="470" y="519"/>
+ <point x="564" y="843"/>
+ <point x="677" y="1294" type="curve"/>
+ <point x="492" y="1294" type="line"/>
+ <point x="377" y="841"/>
+ <point x="263" y="429"/>
+ <point x="243" y="301" type="curve" smooth="yes"/>
+ <point x="238" y="269"/>
+ <point x="236" y="240"/>
+ <point x="236" y="213" type="curve" smooth="yes"/>
+ <point x="236" y="41"/>
+ <point x="330" y="-25"/>
+ <point x="465" y="-25" type="curve" smooth="yes"/>
+ <point x="535" y="-25"/>
+ <point x="634" y="-6"/>
+ <point x="740" y="52" type="curve"/>
+ </contour>
+ <contour>
+ <point x="177" y="833" type="line"/>
+ <point x="887" y="833" type="line"/>
+ <point x="923" y="975" type="line"/>
+ <point x="213" y="975" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mU_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mU_.glif
new file mode 100644
index 0000000..0eda3d2
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mU_.glif
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmU" format="2">
+ <advance width="1175"/>
+ <unicode hex="0075"/>
+ <anchor x="465" y="0" name="H"/>
+ <anchor x="504" y="-100" name="L"/>
+ <anchor x="640" y="0" name="O"/>
+ <anchor x="1375" y="1000" name="R"/>
+ <anchor x="804" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="1040" y="0" type="line"/>
+ <point x="1036" y="29"/>
+ <point x="1035" y="62"/>
+ <point x="1035" y="100" type="curve" smooth="yes"/>
+ <point x="1035" y="206"/>
+ <point x="1054" y="341"/>
+ <point x="1080" y="455" type="curve" smooth="yes"/>
+ <point x="1135" y="689"/>
+ <point x="1197" y="895"/>
+ <point x="1205" y="1000" type="curve"/>
+ <point x="1010" y="1000" type="line"/>
+ <point x="1003" y="882"/>
+ <point x="971" y="769"/>
+ <point x="920" y="565" type="curve"/>
+ <point x="827" y="376"/>
+ <point x="573" y="135"/>
+ <point x="475" y="135" type="curve" smooth="yes"/>
+ <point x="409" y="135"/>
+ <point x="365" y="181"/>
+ <point x="365" y="280" type="curve" smooth="yes"/>
+ <point x="365" y="347"/>
+ <point x="407" y="500"/>
+ <point x="459" y="702" type="curve" smooth="yes"/>
+ <point x="494" y="837"/>
+ <point x="515" y="925"/>
+ <point x="520" y="1000" type="curve"/>
+ <point x="325" y="1000" type="line"/>
+ <point x="313" y="882"/>
+ <point x="295" y="809"/>
+ <point x="265" y="685" type="curve" smooth="yes"/>
+ <point x="195" y="395" type="line" smooth="yes"/>
+ <point x="179" y="330"/>
+ <point x="170" y="275"/>
+ <point x="170" y="225" type="curve" smooth="yes"/>
+ <point x="170" y="60"/>
+ <point x="257" y="-25"/>
+ <point x="410" y="-25" type="curve" smooth="yes"/>
+ <point x="551" y="-25"/>
+ <point x="745" y="118"/>
+ <point x="880" y="305" type="curve"/>
+ <point x="861" y="196"/>
+ <point x="860" y="98"/>
+ <point x="860" y="0" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mV_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mV_.glif
new file mode 100644
index 0000000..33e91d6
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mV_.glif
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmV" format="2">
+ <advance width="941"/>
+ <unicode hex="0076"/>
+ <anchor x="359" y="0" name="H"/>
+ <anchor x="350" y="-100" name="L"/>
+ <anchor x="565" y="0" name="O"/>
+ <anchor x="650" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="180" y="1000" type="line"/>
+ <point x="232" y="825"/>
+ <point x="256" y="602"/>
+ <point x="256" y="354" type="curve" smooth="yes"/>
+ <point x="256" y="241"/>
+ <point x="251" y="122"/>
+ <point x="241" y="0" type="curve"/>
+ <point x="441" y="0" type="line"/>
+ <point x="744" y="336"/>
+ <point x="1056" y="765"/>
+ <point x="1056" y="1000" type="curve"/>
+ <point x="856" y="1000" type="line"/>
+ <point x="856" y="769"/>
+ <point x="606" y="394"/>
+ <point x="404" y="176" type="curve"/>
+ <point x="421" y="277"/>
+ <point x="429" y="402"/>
+ <point x="429" y="526" type="curve" smooth="yes"/>
+ <point x="429" y="707"/>
+ <point x="412" y="887"/>
+ <point x="380" y="1000" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mW_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mW_.glif
new file mode 100644
index 0000000..1daea7c
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mW_.glif
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmW" format="2">
+ <advance width="1555"/>
+ <unicode hex="0077"/>
+ <anchor x="690" y="-100" name="L"/>
+ <anchor x="990" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="858" y="1000" type="line"/>
+ <point x="743" y="739"/>
+ <point x="588" y="466"/>
+ <point x="388" y="181" type="curve"/>
+ <point x="417" y="339"/>
+ <point x="430" y="500"/>
+ <point x="430" y="644" type="curve" smooth="yes"/>
+ <point x="430" y="784"/>
+ <point x="418" y="908"/>
+ <point x="395" y="1000" type="curve"/>
+ <point x="195" y="1000" type="line"/>
+ <point x="234" y="873"/>
+ <point x="256" y="688"/>
+ <point x="256" y="472" type="curve" smooth="yes"/>
+ <point x="256" y="326"/>
+ <point x="246" y="166"/>
+ <point x="225" y="0" type="curve"/>
+ <point x="425" y="0" type="line"/>
+ <point x="632" y="298"/>
+ <point x="825" y="583"/>
+ <point x="896" y="765" type="curve"/>
+ <point x="920" y="478"/>
+ <point x="912" y="233"/>
+ <point x="915" y="0" type="curve"/>
+ <point x="1115" y="0" type="line"/>
+ <point x="1362" y="330"/>
+ <point x="1642" y="777"/>
+ <point x="1645" y="1000" type="curve"/>
+ <point x="1445" y="1000" type="line"/>
+ <point x="1445" y="990" type="line"/>
+ <point x="1445" y="797"/>
+ <point x="1242" y="417"/>
+ <point x="1063" y="181" type="curve"/>
+ <point x="1064" y="221"/>
+ <point x="1064" y="260"/>
+ <point x="1064" y="298" type="curve" smooth="yes"/>
+ <point x="1064" y="577"/>
+ <point x="1046" y="811"/>
+ <point x="1020" y="1000" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mX_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mX_.glif
new file mode 100644
index 0000000..5508ff9
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mX_.glif
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmX" format="2">
+ <advance width="1009"/>
+ <unicode hex="0078"/>
+ <anchor x="840" y="0" name="H"/>
+ <anchor x="457" y="-100" name="L"/>
+ <anchor x="657" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="945" y="0" type="line"/>
+ <point x="765" y="133"/>
+ <point x="558" y="867"/>
+ <point x="439" y="1000" type="curve"/>
+ <point x="181" y="1000" type="line"/>
+ <point x="410" y="832"/>
+ <point x="578" y="141"/>
+ <point x="698" y="0" type="curve"/>
+ </contour>
+ <contour>
+ <point x="504" y="572" type="line"/>
+ <point x="286" y="463"/>
+ <point x="57" y="230"/>
+ <point x="30" y="0" type="curve"/>
+ <point x="230" y="0" type="line"/>
+ <point x="231" y="156"/>
+ <point x="375" y="380"/>
+ <point x="563" y="467" type="curve"/>
+ </contour>
+ <contour>
+ <point x="659" y="471" type="line"/>
+ <point x="838" y="591"/>
+ <point x="1092" y="798"/>
+ <point x="1099" y="1000" type="curve"/>
+ <point x="889" y="1000" type="line"/>
+ <point x="883" y="842"/>
+ <point x="758" y="675"/>
+ <point x="601" y="581" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mY_.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mY_.glif
new file mode 100644
index 0000000..b9000c5
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/L_tnS_mY_.glif
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="LtnSmY" format="2">
+ <advance width="976"/>
+ <unicode hex="0079"/>
+ <anchor x="710" y="-100" name="L"/>
+ <anchor x="1270" y="1000" name="R"/>
+ <anchor x="630" y="1100" name="U"/>
+ <outline>
+ <contour>
+ <point x="132" y="1000" type="line"/>
+ <point x="270" y="825"/>
+ <point x="398" y="406"/>
+ <point x="403" y="-16" type="curve"/>
+ <point x="263" y="-232"/>
+ <point x="145" y="-295"/>
+ <point x="64" y="-295" type="curve" smooth="yes"/>
+ <point x="-2" y="-295"/>
+ <point x="-69" y="-254"/>
+ <point x="-102" y="-220" type="curve"/>
+ <point x="-200" y="-377" type="line"/>
+ <point x="-141" y="-430"/>
+ <point x="-68" y="-465"/>
+ <point x="23" y="-465" type="curve" smooth="yes"/>
+ <point x="193" y="-465"/>
+ <point x="369" y="-371"/>
+ <point x="609" y="0" type="curve" smooth="yes"/>
+ <point x="877" y="414"/>
+ <point x="1056" y="808"/>
+ <point x="1056" y="964" type="curve" smooth="yes"/>
+ <point x="1056" y="978"/>
+ <point x="1055" y="990"/>
+ <point x="1052" y="1000" type="curve"/>
+ <point x="852" y="1000" type="line"/>
+ <point x="856" y="984"/>
+ <point x="858" y="967"/>
+ <point x="858" y="946" type="curve" smooth="yes"/>
+ <point x="858" y="783"/>
+ <point x="722" y="472"/>
+ <point x="548" y="189" type="curve"/>
+ <point x="548" y="484"/>
+ <point x="447" y="866"/>
+ <point x="347" y="1000" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/N_onB_reakingH_yphen.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/N_onB_reakingH_yphen.glif
new file mode 100644
index 0000000..e7d9c06
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/N_onB_reakingH_yphen.glif
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="NonBreakingHyphen" format="2">
+ <advance width="840"/>
+ <unicode hex="2011"/>
+ <anchor x="645" y="1100" name="U"/>
+ <outline>
+ <component base="HyphenMinus"/>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/N_umS_gn.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/N_umS_gn.glif
new file mode 100644
index 0000000..b7506f7
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/N_umS_gn.glif
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="NumSgn" format="2">
+ <advance width="1180"/>
+ <unicode hex="0023"/>
+ <outline>
+ <contour>
+ <point x="739" y="1333" type="line"/>
+ <point x="91" y="98" type="line"/>
+ <point x="261" y="98" type="line"/>
+ <point x="909" y="1333" type="line"/>
+ </contour>
+ <contour>
+ <point x="80" y="465" type="line"/>
+ <point x="1171" y="465" type="line"/>
+ <point x="1208" y="612" type="line"/>
+ <point x="117" y="612" type="line"/>
+ </contour>
+ <contour>
+ <point x="234" y="843" type="line"/>
+ <point x="1325" y="843" type="line"/>
+ <point x="1361" y="990" type="line"/>
+ <point x="270" y="990" type="line"/>
+ </contour>
+ <contour>
+ <point x="1164" y="1333" type="line"/>
+ <point x="516" y="98" type="line"/>
+ <point x="686" y="98" type="line"/>
+ <point x="1334" y="1333" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/P_ercentS_gn.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/P_ercentS_gn.glif
new file mode 100644
index 0000000..84241ea
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/P_ercentS_gn.glif
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="PercentSgn" format="2">
+ <advance width="1506"/>
+ <unicode hex="0025"/>
+ <outline>
+ <contour>
+ <point x="1300" y="349" type="curve" smooth="yes"/>
+ <point x="1255" y="168"/>
+ <point x="1204" y="113"/>
+ <point x="1118" y="113" type="curve" smooth="yes"/>
+ <point x="1056" y="113"/>
+ <point x="1021" y="148"/>
+ <point x="1021" y="235" type="curve" smooth="yes"/>
+ <point x="1021" y="274"/>
+ <point x="1028" y="322"/>
+ <point x="1043" y="383" type="curve" smooth="yes"/>
+ <point x="1088" y="564"/>
+ <point x="1136" y="617"/>
+ <point x="1223" y="617" type="curve" smooth="yes"/>
+ <point x="1286" y="617"/>
+ <point x="1322" y="582"/>
+ <point x="1322" y="496" type="curve" smooth="yes"/>
+ <point x="1322" y="458"/>
+ <point x="1315" y="409"/>
+ </contour>
+ <contour>
+ <point x="1468" y="361" type="curve" smooth="yes"/>
+ <point x="1483" y="419"/>
+ <point x="1489" y="470"/>
+ <point x="1489" y="515" type="curve" smooth="yes"/>
+ <point x="1489" y="677"/>
+ <point x="1400" y="755"/>
+ <point x="1263" y="755" type="curve" smooth="yes"/>
+ <point x="1089" y="755"/>
+ <point x="945" y="647"/>
+ <point x="876" y="371" type="curve" smooth="yes"/>
+ <point x="861" y="310"/>
+ <point x="854" y="256"/>
+ <point x="854" y="210" type="curve" smooth="yes"/>
+ <point x="854" y="47"/>
+ <point x="943" y="-25"/>
+ <point x="1079" y="-25" type="curve" smooth="yes"/>
+ <point x="1254" y="-25"/>
+ <point x="1396" y="72"/>
+ </contour>
+ <contour>
+ <point x="1369" y="1450" type="line"/>
+ <point x="219" y="-25" type="line"/>
+ <point x="397" y="-25" type="line"/>
+ <point x="1545" y="1450" type="line"/>
+ </contour>
+ <contour>
+ <point x="717" y="1044" type="curve" smooth="yes"/>
+ <point x="672" y="864"/>
+ <point x="621" y="809"/>
+ <point x="535" y="809" type="curve" smooth="yes"/>
+ <point x="474" y="809"/>
+ <point x="439" y="844"/>
+ <point x="439" y="930" type="curve" smooth="yes"/>
+ <point x="439" y="969"/>
+ <point x="446" y="1018"/>
+ <point x="461" y="1079" type="curve" smooth="yes"/>
+ <point x="506" y="1260"/>
+ <point x="554" y="1313"/>
+ <point x="641" y="1313" type="curve" smooth="yes"/>
+ <point x="704" y="1313"/>
+ <point x="739" y="1278"/>
+ <point x="739" y="1192" type="curve" smooth="yes"/>
+ <point x="739" y="1153"/>
+ <point x="732" y="1105"/>
+ </contour>
+ <contour>
+ <point x="886" y="1057" type="curve" smooth="yes"/>
+ <point x="900" y="1114"/>
+ <point x="907" y="1166"/>
+ <point x="907" y="1210" type="curve" smooth="yes"/>
+ <point x="907" y="1373"/>
+ <point x="817" y="1450"/>
+ <point x="680" y="1450" type="curve" smooth="yes"/>
+ <point x="506" y="1450"/>
+ <point x="362" y="1343"/>
+ <point x="293" y="1066" type="curve" smooth="yes"/>
+ <point x="278" y="1005"/>
+ <point x="271" y="952"/>
+ <point x="271" y="906" type="curve" smooth="yes"/>
+ <point x="271" y="743"/>
+ <point x="360" y="671"/>
+ <point x="497" y="671" type="curve" smooth="yes"/>
+ <point x="672" y="671"/>
+ <point x="813" y="768"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/P_lusS_gn.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/P_lusS_gn.glif
new file mode 100644
index 0000000..8c4577e
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/P_lusS_gn.glif
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="PlusSgn" format="2">
+ <advance width="1180"/>
+ <unicode hex="002B"/>
+ <outline>
+ <contour>
+ <point x="748" y="1156" type="line"/>
+ <point x="529" y="279" type="line"/>
+ <point x="684" y="279" type="line"/>
+ <point x="903" y="1156" type="line"/>
+ </contour>
+ <contour>
+ <point x="256" y="647" type="line"/>
+ <point x="1146" y="647" type="line"/>
+ <point x="1182" y="794" type="line"/>
+ <point x="292" y="794" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/Q_stnM_rk.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/Q_stnM_rk.glif
new file mode 100644
index 0000000..8b14a6c
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/Q_stnM_rk.glif
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="QstnMrk" format="2">
+ <advance width="1030"/>
+ <unicode hex="003F"/>
+ <outline>
+ <contour>
+ <point x="419" y="1226" type="line"/>
+ <point x="514" y="1303"/>
+ <point x="615" y="1338"/>
+ <point x="685" y="1338" type="curve" smooth="yes"/>
+ <point x="800" y="1338"/>
+ <point x="858" y="1294"/>
+ <point x="858" y="1222" type="curve" smooth="yes"/>
+ <point x="858" y="1122"/>
+ <point x="713" y="1017"/>
+ <point x="654" y="960" type="curve" smooth="yes"/>
+ <point x="538" y="850"/>
+ <point x="473" y="715"/>
+ <point x="402" y="431" type="curve"/>
+ <point x="587" y="431" type="line"/>
+ <point x="656" y="707"/>
+ <point x="697" y="778"/>
+ <point x="831" y="901" type="curve" smooth="yes"/>
+ <point x="949" y="1010"/>
+ <point x="1072" y="1146"/>
+ <point x="1072" y="1272" type="curve" smooth="yes"/>
+ <point x="1072" y="1409"/>
+ <point x="947" y="1509"/>
+ <point x="746" y="1509" type="curve" smooth="yes"/>
+ <point x="631" y="1509"/>
+ <point x="500" y="1463"/>
+ <point x="419" y="1401" type="curve"/>
+ </contour>
+ <contour>
+ <point x="278" y="90" type="curve" smooth="yes"/>
+ <point x="278" y="28"/>
+ <point x="328" y="-25"/>
+ <point x="393" y="-25" type="curve" smooth="yes"/>
+ <point x="477" y="-25"/>
+ <point x="554" y="45"/>
+ <point x="554" y="125" type="curve" smooth="yes"/>
+ <point x="554" y="186"/>
+ <point x="504" y="240"/>
+ <point x="439" y="240" type="curve" smooth="yes"/>
+ <point x="355" y="240"/>
+ <point x="278" y="170"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/Q_uotM_rk.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/Q_uotM_rk.glif
new file mode 100644
index 0000000..4a8357b
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/Q_uotM_rk.glif
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="QuotMrk" format="2">
+ <advance width="1005"/>
+ <unicode hex="0022"/>
+ <outline>
+ <contour>
+ <point x="600" y="1024" type="line"/>
+ <point x="639" y="1162"/>
+ <point x="683" y="1312"/>
+ <point x="772" y="1553" type="curve"/>
+ <point x="567" y="1553" type="line"/>
+ <point x="538" y="1312"/>
+ <point x="505" y="1162"/>
+ <point x="475" y="1024" type="curve"/>
+ </contour>
+ <contour>
+ <point x="940" y="1024" type="line"/>
+ <point x="979" y="1162"/>
+ <point x="1023" y="1312"/>
+ <point x="1112" y="1553" type="curve"/>
+ <point x="907" y="1553" type="line"/>
+ <point x="878" y="1312"/>
+ <point x="845" y="1162"/>
+ <point x="815" y="1024" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_everseS_olidus.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_everseS_olidus.glif
new file mode 100644
index 0000000..f146267
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_everseS_olidus.glif
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="ReverseSolidus" format="2">
+ <advance width="1005"/>
+ <unicode hex="005C"/>
+ <outline>
+ <contour>
+ <point x="473" y="1538" type="line"/>
+ <point x="656" y="-123" type="line"/>
+ <point x="799" y="-93" type="line"/>
+ <point x="620" y="1568" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tC_urlyB_rac.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tC_urlyB_rac.glif
new file mode 100644
index 0000000..82df531
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tC_urlyB_rac.glif
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="RtCurlyBrac" format="2">
+ <advance width="980"/>
+ <unicode hex="007D"/>
+ <outline>
+ <contour>
+ <point x="466" y="1470" type="line"/>
+ <point x="513" y="1452"/>
+ <point x="653" y="1397"/>
+ <point x="653" y="1366" type="curve" smooth="yes"/>
+ <point x="653" y="1238"/>
+ <point x="531" y="801"/>
+ <point x="531" y="737" type="curve" smooth="yes"/>
+ <point x="531" y="701"/>
+ <point x="660" y="627"/>
+ <point x="660" y="603" type="curve" smooth="yes"/>
+ <point x="660" y="585"/>
+ <point x="496" y="511"/>
+ <point x="468" y="475" type="curve" smooth="yes"/>
+ <point x="439" y="438"/>
+ <point x="312" y="-121"/>
+ <point x="268" y="-167" type="curve" smooth="yes"/>
+ <point x="241" y="-194"/>
+ <point x="106" y="-242"/>
+ <point x="33" y="-265" type="curve"/>
+ <point x="39" y="-402" type="line"/>
+ <point x="150" y="-375"/>
+ <point x="324" y="-323"/>
+ <point x="375" y="-279" type="curve" smooth="yes"/>
+ <point x="465" y="-201"/>
+ <point x="608" y="410"/>
+ <point x="639" y="441" type="curve" smooth="yes"/>
+ <point x="675" y="476"/>
+ <point x="880" y="571"/>
+ <point x="880" y="607" type="curve" smooth="yes"/>
+ <point x="880" y="639"/>
+ <point x="719" y="740"/>
+ <point x="719" y="771" type="curve" smooth="yes"/>
+ <point x="719" y="839"/>
+ <point x="825" y="1259"/>
+ <point x="825" y="1425" type="curve" smooth="yes"/>
+ <point x="825" y="1453"/>
+ <point x="822" y="1474"/>
+ <point x="815" y="1485" type="curve" smooth="yes"/>
+ <point x="786" y="1529"/>
+ <point x="638" y="1581"/>
+ <point x="540" y="1607" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tP_aren.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tP_aren.glif
new file mode 100644
index 0000000..3950e09
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tP_aren.glif
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="RtParen" format="2">
+ <advance width="775"/>
+ <unicode hex="0029"/>
+ <outline>
+ <contour>
+ <point x="467" y="1455" type="line"/>
+ <point x="578" y="1327"/>
+ <point x="628" y="1146"/>
+ <point x="628" y="946" type="curve" smooth="yes"/>
+ <point x="628" y="832"/>
+ <point x="612" y="713"/>
+ <point x="582" y="593" type="curve" smooth="yes"/>
+ <point x="497" y="252"/>
+ <point x="328" y="-8"/>
+ <point x="40" y="-260" type="curve"/>
+ <point x="99" y="-402" type="line"/>
+ <point x="444" y="-123"/>
+ <point x="673" y="194"/>
+ <point x="772" y="593" type="curve" smooth="yes"/>
+ <point x="804" y="719"/>
+ <point x="819" y="843"/>
+ <point x="819" y="959" type="curve" smooth="yes"/>
+ <point x="819" y="1236"/>
+ <point x="733" y="1472"/>
+ <point x="580" y="1607" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tS_qrB_rac.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tS_qrB_rac.glif
new file mode 100644
index 0000000..4c13a82
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/R_tS_qrB_rac.glif
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="RtSqrBrac" format="2">
+ <advance width="770"/>
+ <unicode hex="005D"/>
+ <outline>
+ <contour>
+ <point x="434" y="-402" type="line"/>
+ <point x="920" y="1568" type="line"/>
+ <point x="480" y="1568" type="line"/>
+ <point x="444" y="1421" type="line"/>
+ <point x="699" y="1421" type="line"/>
+ <point x="286" y="-255" type="line"/>
+ <point x="31" y="-255" type="line"/>
+ <point x="-6" y="-402" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_emicolon.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_emicolon.glif
new file mode 100644
index 0000000..be971ac
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_emicolon.glif
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Semicolon" format="2">
+ <advance width="630"/>
+ <unicode hex="003B"/>
+ <outline>
+ <contour>
+ <point x="314" y="758" type="curve" smooth="yes"/>
+ <point x="314" y="696"/>
+ <point x="365" y="642"/>
+ <point x="430" y="642" type="curve" smooth="yes"/>
+ <point x="514" y="642"/>
+ <point x="590" y="712"/>
+ <point x="590" y="792" type="curve" smooth="yes"/>
+ <point x="590" y="854"/>
+ <point x="540" y="907"/>
+ <point x="476" y="907" type="curve" smooth="yes"/>
+ <point x="393" y="907"/>
+ <point x="314" y="837"/>
+ </contour>
+ <contour>
+ <point x="137" y="49" type="line"/>
+ <point x="277" y="49" type="line"/>
+ <point x="252" y="-50"/>
+ <point x="145" y="-169"/>
+ <point x="73" y="-225" type="curve"/>
+ <point x="163" y="-265" type="line"/>
+ <point x="280" y="-175"/>
+ <point x="431" y="-28"/>
+ <point x="431" y="118" type="curve" smooth="yes"/>
+ <point x="431" y="193"/>
+ <point x="378" y="245"/>
+ <point x="311" y="245" type="curve" smooth="yes"/>
+ <point x="254" y="245"/>
+ <point x="190" y="209"/>
+ <point x="161" y="147" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_olidus.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_olidus.glif
new file mode 100644
index 0000000..589697b
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_olidus.glif
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Solidus" format="2">
+ <advance width="980"/>
+ <unicode hex="002F"/>
+ <outline>
+ <contour>
+ <point x="1160" y="1568" type="line"/>
+ <point x="-119" y="-240" type="line"/>
+ <point x="50" y="-240" type="line"/>
+ <point x="1330" y="1568" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_pace.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_pace.glif
new file mode 100644
index 0000000..c49f0f2
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/S_pace.glif
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Space" format="2">
+ <advance width="530"/>
+ <unicode hex="0020"/>
+ <outline/>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/T_ilde.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/T_ilde.glif
new file mode 100644
index 0000000..bf260b8
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/T_ilde.glif
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="Tilde" format="2">
+ <advance width="1095"/>
+ <unicode hex="007E"/>
+ <outline>
+ <contour>
+ <point x="156" y="368" type="line"/>
+ <point x="173" y="416"/>
+ <point x="215" y="456"/>
+ <point x="293" y="456" type="curve" smooth="yes"/>
+ <point x="468" y="456"/>
+ <point x="643" y="353"/>
+ <point x="873" y="353" type="curve" smooth="yes"/>
+ <point x="1032" y="353"/>
+ <point x="1137" y="472"/>
+ <point x="1169" y="598" type="curve"/>
+ <point x="1064" y="598" type="line"/>
+ <point x="1045" y="553"/>
+ <point x="1002" y="500"/>
+ <point x="919" y="500" type="curve" smooth="yes"/>
+ <point x="683" y="500"/>
+ <point x="551" y="603"/>
+ <point x="330" y="603" type="curve" smooth="yes"/>
+ <point x="184" y="603"/>
+ <point x="81" y="487"/>
+ <point x="51" y="368" type="curve"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/V_ertL_ine.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/V_ertL_ine.glif
new file mode 100644
index 0000000..445d622
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/V_ertL_ine.glif
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="VertLine" format="2">
+ <advance width="670"/>
+ <unicode hex="007C"/>
+ <outline>
+ <contour>
+ <point x="602" y="1578" type="line"/>
+ <point x="112" y="-392" type="line"/>
+ <point x="262" y="-392" type="line"/>
+ <point x="752" y="1578" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/_notdef.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/_notdef.glif
new file mode 100644
index 0000000..a3e9354
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/_notdef.glif
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name=".notdef" format="2">
+ <advance width="1400"/>
+ <outline>
+ <contour>
+ <point x="100" y="0" type="line"/>
+ <point x="1300" y="0" type="line"/>
+ <point x="1300" y="1800" type="line"/>
+ <point x="100" y="1800" type="line"/>
+ </contour>
+ <contour>
+ <point x="150" y="1750" type="line"/>
+ <point x="1250" y="1750" type="line"/>
+ <point x="1250" y="50" type="line"/>
+ <point x="150" y="50" type="line"/>
+ </contour>
+ </outline>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/_null.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/_null.glif
new file mode 100644
index 0000000..0b9caa6
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/_null.glif
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name=".null" format="2">
+ <outline/>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/contents.plist b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/contents.plist
new file mode 100644
index 0000000..ad2aa41
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/contents.plist
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>.notdef</key>
+ <string>_notdef.glif</string>
+ <key>.null</key>
+ <string>_null.glif</string>
+ <key>Ampersand</key>
+ <string>A_mpersand.glif</string>
+ <key>Apos</key>
+ <string>A_pos.glif</string>
+ <key>Asterisk</key>
+ <string>A_sterisk.glif</string>
+ <key>AtSgn</key>
+ <string>A_tS_gn.glif</string>
+ <key>CircumAccent</key>
+ <string>C_ircumA_ccent.glif</string>
+ <key>Colon</key>
+ <string>C_olon.glif</string>
+ <key>CombAcute</key>
+ <string>C_ombA_cute.glif</string>
+ <key>CombCircum</key>
+ <string>C_ombC_ircum.glif</string>
+ <key>CombDiaer</key>
+ <string>C_ombD_iaer.glif</string>
+ <key>CombGrave</key>
+ <string>C_ombG_rave.glif</string>
+ <key>CombRingAbv</key>
+ <string>C_ombR_ingA_bv.glif</string>
+ <key>CombTilde</key>
+ <string>C_ombT_ilde.glif</string>
+ <key>Comma</key>
+ <string>C_omma.glif</string>
+ <key>DigitEight</key>
+ <string>D_igitE_ight.glif</string>
+ <key>DigitFive</key>
+ <string>D_igitF_ive.glif</string>
+ <key>DigitFour</key>
+ <string>D_igitF_our.glif</string>
+ <key>DigitNine</key>
+ <string>D_igitN_ine.glif</string>
+ <key>DigitOne</key>
+ <string>D_igitO_ne.glif</string>
+ <key>DigitSeven</key>
+ <string>D_igitS_even.glif</string>
+ <key>DigitSix</key>
+ <string>D_igitS_ix.glif</string>
+ <key>DigitThree</key>
+ <string>D_igitT_hree.glif</string>
+ <key>DigitTwo</key>
+ <string>D_igitT_wo.glif</string>
+ <key>DigitZero</key>
+ <string>D_igitZ_ero.glif</string>
+ <key>DollarSgn</key>
+ <string>D_ollarS_gn.glif</string>
+ <key>DottedCirc</key>
+ <string>D_ottedC_irc.glif</string>
+ <key>EqSgn</key>
+ <string>E_qS_gn.glif</string>
+ <key>ExclamationMrk</key>
+ <string>E_xclamationM_rk.glif</string>
+ <key>FullStop</key>
+ <string>F_ullS_top.glif</string>
+ <key>GTSgn</key>
+ <string>G_T_S_gn.glif</string>
+ <key>GraveAccent</key>
+ <string>G_raveA_ccent.glif</string>
+ <key>Hyphen</key>
+ <string>H_yphen.glif</string>
+ <key>HyphenMinus</key>
+ <string>H_yphenM_inus.glif</string>
+ <key>Hyphen_Soft</key>
+ <string>H_yphen_S_oft.glif</string>
+ <key>LTSgn</key>
+ <string>L_T_S_gn.glif</string>
+ <key>LftCurlyBrac</key>
+ <string>L_ftC_urlyB_rac.glif</string>
+ <key>LftParen</key>
+ <string>L_ftP_aren.glif</string>
+ <key>LftSqrBrac</key>
+ <string>L_ftS_qrB_rac.glif</string>
+ <key>LowLine</key>
+ <string>L_owL_ine.glif</string>
+ <key>LtnCapA</key>
+ <string>L_tnC_apA_.glif</string>
+ <key>LtnCapADiaer</key>
+ <string>L_tnC_apA_D_iaer.glif</string>
+ <key>LtnCapB</key>
+ <string>L_tnC_apB_.glif</string>
+ <key>LtnCapC</key>
+ <string>L_tnC_apC_.glif</string>
+ <key>LtnCapD</key>
+ <string>L_tnC_apD_.glif</string>
+ <key>LtnCapE</key>
+ <string>L_tnC_apE_.glif</string>
+ <key>LtnCapF</key>
+ <string>L_tnC_apF_.glif</string>
+ <key>LtnCapG</key>
+ <string>L_tnC_apG_.glif</string>
+ <key>LtnCapH</key>
+ <string>L_tnC_apH_.glif</string>
+ <key>LtnCapI</key>
+ <string>L_tnC_apI_.glif</string>
+ <key>LtnCapJ</key>
+ <string>L_tnC_apJ_.glif</string>
+ <key>LtnCapK</key>
+ <string>L_tnC_apK_.glif</string>
+ <key>LtnCapL</key>
+ <string>L_tnC_apL_.glif</string>
+ <key>LtnCapM</key>
+ <string>L_tnC_apM_.glif</string>
+ <key>LtnCapN</key>
+ <string>L_tnC_apN_.glif</string>
+ <key>LtnCapO</key>
+ <string>L_tnC_apO_.glif</string>
+ <key>LtnCapP</key>
+ <string>L_tnC_apP_.glif</string>
+ <key>LtnCapQ</key>
+ <string>L_tnC_apQ_.glif</string>
+ <key>LtnCapR</key>
+ <string>L_tnC_apR_.glif</string>
+ <key>LtnCapS</key>
+ <string>L_tnC_apS_.glif</string>
+ <key>LtnCapT</key>
+ <string>L_tnC_apT_.glif</string>
+ <key>LtnCapU</key>
+ <string>L_tnC_apU_.glif</string>
+ <key>LtnCapV</key>
+ <string>L_tnC_apV_.glif</string>
+ <key>LtnCapW</key>
+ <string>L_tnC_apW_.glif</string>
+ <key>LtnCapX</key>
+ <string>L_tnC_apX_.glif</string>
+ <key>LtnCapY</key>
+ <string>L_tnC_apY_.glif</string>
+ <key>LtnSmA</key>
+ <string>L_tnS_mA_.glif</string>
+ <key>LtnSmAAcute</key>
+ <string>L_tnS_mA_A_cute.glif</string>
+ <key>LtnSmACircum</key>
+ <string>L_tnS_mA_C_ircum.glif</string>
+ <key>LtnSmADiaer</key>
+ <string>L_tnS_mA_D_iaer.glif</string>
+ <key>LtnSmAGrave</key>
+ <string>L_tnS_mA_G_rave.glif</string>
+ <key>LtnSmARingAbv</key>
+ <string>L_tnS_mA_R_ingA_bv.glif</string>
+ <key>LtnSmATilde</key>
+ <string>L_tnS_mA_T_ilde.glif</string>
+ <key>LtnSmB</key>
+ <string>L_tnS_mB_.glif</string>
+ <key>LtnSmC</key>
+ <string>L_tnS_mC_.glif</string>
+ <key>LtnSmD</key>
+ <string>L_tnS_mD_.glif</string>
+ <key>LtnSmE</key>
+ <string>L_tnS_mE_.glif</string>
+ <key>LtnSmF</key>
+ <string>L_tnS_mF_.glif</string>
+ <key>LtnSmG</key>
+ <string>L_tnS_mG_.glif</string>
+ <key>LtnSmH</key>
+ <string>L_tnS_mH_.glif</string>
+ <key>LtnSmI</key>
+ <string>L_tnS_mI_.glif</string>
+ <key>LtnSmJ</key>
+ <string>L_tnS_mJ_.glif</string>
+ <key>LtnSmK</key>
+ <string>L_tnS_mK_.glif</string>
+ <key>LtnSmL</key>
+ <string>L_tnS_mL_.glif</string>
+ <key>LtnSmM</key>
+ <string>L_tnS_mM_.glif</string>
+ <key>LtnSmN</key>
+ <string>L_tnS_mN_.glif</string>
+ <key>LtnSmO</key>
+ <string>L_tnS_mO_.glif</string>
+ <key>LtnSmP</key>
+ <string>L_tnS_mP_.glif</string>
+ <key>LtnSmQ</key>
+ <string>L_tnS_mQ_.glif</string>
+ <key>LtnSmR</key>
+ <string>L_tnS_mR_.glif</string>
+ <key>LtnSmS</key>
+ <string>L_tnS_mS_.glif</string>
+ <key>LtnSmT</key>
+ <string>L_tnS_mT_.glif</string>
+ <key>LtnSmU</key>
+ <string>L_tnS_mU_.glif</string>
+ <key>LtnSmV</key>
+ <string>L_tnS_mV_.glif</string>
+ <key>LtnSmW</key>
+ <string>L_tnS_mW_.glif</string>
+ <key>LtnSmX</key>
+ <string>L_tnS_mX_.glif</string>
+ <key>LtnSmY</key>
+ <string>L_tnS_mY_.glif</string>
+ <key>NonBreakingHyphen</key>
+ <string>N_onB_reakingH_yphen.glif</string>
+ <key>NumSgn</key>
+ <string>N_umS_gn.glif</string>
+ <key>PercentSgn</key>
+ <string>P_ercentS_gn.glif</string>
+ <key>PlusSgn</key>
+ <string>P_lusS_gn.glif</string>
+ <key>QstnMrk</key>
+ <string>Q_stnM_rk.glif</string>
+ <key>QuotMrk</key>
+ <string>Q_uotM_rk.glif</string>
+ <key>ReverseSolidus</key>
+ <string>R_everseS_olidus.glif</string>
+ <key>RtCurlyBrac</key>
+ <string>R_tC_urlyB_rac.glif</string>
+ <key>RtParen</key>
+ <string>R_tP_aren.glif</string>
+ <key>RtSqrBrac</key>
+ <string>R_tS_qrB_rac.glif</string>
+ <key>Semicolon</key>
+ <string>S_emicolon.glif</string>
+ <key>Solidus</key>
+ <string>S_olidus.glif</string>
+ <key>Space</key>
+ <string>S_pace.glif</string>
+ <key>Tilde</key>
+ <string>T_ilde.glif</string>
+ <key>VertLine</key>
+ <string>V_ertL_ine.glif</string>
+ <key>nonmarkingreturn</key>
+ <string>nonmarkingreturn.glif</string>
+</dict>
+</plist>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/nonmarkingreturn.glif b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/nonmarkingreturn.glif
new file mode 100644
index 0000000..9a63f06
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/glyphs/nonmarkingreturn.glif
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="nonmarkingreturn" format="2">
+ <advance width="1004"/>
+ <outline/>
+</glyph>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/layercontents.plist b/tests/reference/ufo/psfsetassocfeat.ufo/layercontents.plist
new file mode 100644
index 0000000..42b7482
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/layercontents.plist
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<array>
+ <array>
+ <string>public.default</string>
+ <string>glyphs</string>
+ </array>
+</array>
+</plist>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/lib.plist b/tests/reference/ufo/psfsetassocfeat.ufo/lib.plist
new file mode 100644
index 0000000..43413a8
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/lib.plist
@@ -0,0 +1,538 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.schriftgestaltung.Glyphs.fontUserData</key>
+ <dict/>
+ <key>com.schriftgestaltung.appVersion</key>
+ <string>1161</string>
+ <key>com.schriftgestaltung.customName</key>
+ <string>Italic</string>
+ <key>com.schriftgestaltung.customParameter.GSFont.DisplayStrings</key>
+ <string/>
+ <key>com.schriftgestaltung.customParameter.GSFont.disablesAutomaticAlignment</key>
+ <true/>
+ <key>com.schriftgestaltung.customParameter.GSFont.disablesLastChange</key>
+ <true/>
+ <key>com.schriftgestaltung.customParameter.GSFont.useNiceNames</key>
+ <integer>0</integer>
+ <key>com.schriftgestaltung.customParameter.GSFontMaster.customValue</key>
+ <integer>0</integer>
+ <key>com.schriftgestaltung.customParameter.GSFontMaster.customValue1</key>
+ <integer>0</integer>
+ <key>com.schriftgestaltung.customParameter.GSFontMaster.customValue2</key>
+ <integer>0</integer>
+ <key>com.schriftgestaltung.customParameter.GSFontMaster.customValue3</key>
+ <integer>0</integer>
+ <key>com.schriftgestaltung.customParameter.GSFontMaster.iconName</key>
+ <string/>
+ <key>com.schriftgestaltung.customParameter.GSFontMaster.weightValue</key>
+ <integer>400</integer>
+ <key>com.schriftgestaltung.customParameter.GSFontMaster.widthValue</key>
+ <integer>100</integer>
+ <key>com.schriftgestaltung.disablesAutomaticAlignment</key>
+ <true/>
+ <key>com.schriftgestaltung.disablesLastChange</key>
+ <true/>
+ <key>com.schriftgestaltung.fontMasterOrder</key>
+ <integer>0</integer>
+ <key>com.schriftgestaltung.glyphOrder</key>
+ <array>
+ <string>.notdef</string>
+ <string>.null</string>
+ <string>nonmarkingreturn</string>
+ <string>Space</string>
+ <string>ExclamationMrk</string>
+ <string>QuotMrk</string>
+ <string>NumSgn</string>
+ <string>DollarSgn</string>
+ <string>PercentSgn</string>
+ <string>Ampersand</string>
+ <string>Apos</string>
+ <string>LftParen</string>
+ <string>RtParen</string>
+ <string>Asterisk</string>
+ <string>PlusSgn</string>
+ <string>Comma</string>
+ <string>HyphenMinus</string>
+ <string>FullStop</string>
+ <string>Solidus</string>
+ <string>DigitZero</string>
+ <string>DigitOne</string>
+ <string>DigitTwo</string>
+ <string>DigitThree</string>
+ <string>DigitFour</string>
+ <string>DigitFive</string>
+ <string>DigitSix</string>
+ <string>DigitSeven</string>
+ <string>DigitEight</string>
+ <string>DigitNine</string>
+ <string>Colon</string>
+ <string>Semicolon</string>
+ <string>LTSgn</string>
+ <string>EqSgn</string>
+ <string>GTSgn</string>
+ <string>QstnMrk</string>
+ <string>AtSgn</string>
+ <string>LtnCapA</string>
+ <string>LtnCapA.alt</string>
+ <string>LtnCapB</string>
+ <string>LtnCapC</string>
+ <string>LtnCapD</string>
+ <string>LtnCapE</string>
+ <string>LtnCapF</string>
+ <string>LtnCapG</string>
+ <string>LtnCapH</string>
+ <string>LtnCapI</string>
+ <string>LtnCapJ</string>
+ <string>LtnCapK</string>
+ <string>LtnCapL</string>
+ <string>LtnCapM</string>
+ <string>LtnCapN</string>
+ <string>LtnCapO</string>
+ <string>LtnCapP</string>
+ <string>LtnCapQ</string>
+ <string>LtnCapR</string>
+ <string>LtnCapS</string>
+ <string>LtnCapT</string>
+ <string>LtnCapU</string>
+ <string>LtnCapV</string>
+ <string>LtnCapW</string>
+ <string>LtnCapX</string>
+ <string>LtnCapY</string>
+ <string>LftSqrBrac</string>
+ <string>ReverseSolidus</string>
+ <string>RtSqrBrac</string>
+ <string>CircumAccent</string>
+ <string>LowLine</string>
+ <string>GraveAccent</string>
+ <string>LtnSmA</string>
+ <string>LtnSmB</string>
+ <string>LtnSmC</string>
+ <string>LtnSmD</string>
+ <string>LtnSmE</string>
+ <string>LtnSmF</string>
+ <string>LtnSmG</string>
+ <string>LtnSmH</string>
+ <string>LtnSmI</string>
+ <string>LtnSmJ</string>
+ <string>LtnSmK</string>
+ <string>LtnSmL</string>
+ <string>LtnSmM</string>
+ <string>LtnSmN</string>
+ <string>LtnSmO</string>
+ <string>LtnSmP</string>
+ <string>LtnSmQ</string>
+ <string>LtnSmR</string>
+ <string>LtnSmS</string>
+ <string>LtnSmT</string>
+ <string>LtnSmU</string>
+ <string>LtnSmV</string>
+ <string>LtnSmW</string>
+ <string>LtnSmX</string>
+ <string>LtnSmY</string>
+ <string>LftCurlyBrac</string>
+ <string>VertLine</string>
+ <string>RtCurlyBrac</string>
+ <string>Tilde</string>
+ <string>LtnCapADiaer</string>
+ <string>LtnSmAAcute</string>
+ <string>LtnSmAGrave</string>
+ <string>LtnSmACircum</string>
+ <string>LtnSmADiaer</string>
+ <string>LtnSmATilde</string>
+ <string>LtnSmARingAbv</string>
+ <string>DottedCirc</string>
+ <string>Hyphen</string>
+ <string>NonBreakingHyphen</string>
+ <string>Hyphen_Soft</string>
+ <string>CombAcute</string>
+ <string>CombGrave</string>
+ <string>CombCircum</string>
+ <string>CombTilde</string>
+ <string>CombDiaer</string>
+ <string>CombRingAbv</string>
+ </array>
+ <key>com.schriftgestaltung.keyboardIncrement</key>
+ <integer>1</integer>
+ <key>com.schriftgestaltung.weight</key>
+ <string>Regular</string>
+ <key>com.schriftgestaltung.weightValue</key>
+ <integer>400</integer>
+ <key>com.schriftgestaltung.width</key>
+ <string>Regular</string>
+ <key>com.schriftgestaltung.widthValue</key>
+ <integer>100</integer>
+ <key>org.sil.lcg.toneLetters</key>
+ <dict>
+ <key>contourWidth</key>
+ <integer>480</integer>
+ <key>dotSize</key>
+ <integer>180</integer>
+ <key>dotSpacing</key>
+ <integer>200</integer>
+ <key>glyphDepth</key>
+ <integer>-25</integer>
+ <key>glyphHeight</key>
+ <integer>1600</integer>
+ <key>italicAngle</key>
+ <integer>14</integer>
+ <key>marginDotLeft</key>
+ <integer>120</integer>
+ <key>marginDotRight</key>
+ <integer>160</integer>
+ <key>marginFlatLeft</key>
+ <integer>120</integer>
+ <key>marginFlatRight</key>
+ <integer>160</integer>
+ <key>marginPointLeft</key>
+ <integer>100</integer>
+ <key>marginPointRight</key>
+ <integer>140</integer>
+ <key>strokeThickness</key>
+ <integer>120</integer>
+ </dict>
+ <key>public.glyphOrder</key>
+ <array>
+ <string>.notdef</string>
+ <string>.null</string>
+ <string>nonmarkingreturn</string>
+ <string>Space</string>
+ <string>ExclamationMrk</string>
+ <string>QuotMrk</string>
+ <string>NumSgn</string>
+ <string>DollarSgn</string>
+ <string>PercentSgn</string>
+ <string>Ampersand</string>
+ <string>Apos</string>
+ <string>LftParen</string>
+ <string>RtParen</string>
+ <string>Asterisk</string>
+ <string>PlusSgn</string>
+ <string>Comma</string>
+ <string>HyphenMinus</string>
+ <string>FullStop</string>
+ <string>Solidus</string>
+ <string>DigitZero</string>
+ <string>DigitOne</string>
+ <string>DigitTwo</string>
+ <string>DigitThree</string>
+ <string>DigitFour</string>
+ <string>DigitFive</string>
+ <string>DigitSix</string>
+ <string>DigitSeven</string>
+ <string>DigitEight</string>
+ <string>DigitNine</string>
+ <string>Colon</string>
+ <string>Semicolon</string>
+ <string>LTSgn</string>
+ <string>EqSgn</string>
+ <string>GTSgn</string>
+ <string>QstnMrk</string>
+ <string>AtSgn</string>
+ <string>LtnCapA</string>
+ <string>LtnCapA.alt</string>
+ <string>LtnCapB</string>
+ <string>LtnCapC</string>
+ <string>LtnCapD</string>
+ <string>LtnCapE</string>
+ <string>LtnCapF</string>
+ <string>LtnCapG</string>
+ <string>LtnCapH</string>
+ <string>LtnCapI</string>
+ <string>LtnCapJ</string>
+ <string>LtnCapK</string>
+ <string>LtnCapL</string>
+ <string>LtnCapM</string>
+ <string>LtnCapN</string>
+ <string>LtnCapO</string>
+ <string>LtnCapP</string>
+ <string>LtnCapQ</string>
+ <string>LtnCapR</string>
+ <string>LtnCapS</string>
+ <string>LtnCapT</string>
+ <string>LtnCapU</string>
+ <string>LtnCapV</string>
+ <string>LtnCapW</string>
+ <string>LtnCapX</string>
+ <string>LtnCapY</string>
+ <string>LftSqrBrac</string>
+ <string>ReverseSolidus</string>
+ <string>RtSqrBrac</string>
+ <string>CircumAccent</string>
+ <string>LowLine</string>
+ <string>GraveAccent</string>
+ <string>LtnSmA</string>
+ <string>LtnSmB</string>
+ <string>LtnSmC</string>
+ <string>LtnSmD</string>
+ <string>LtnSmE</string>
+ <string>LtnSmF</string>
+ <string>LtnSmG</string>
+ <string>LtnSmH</string>
+ <string>LtnSmI</string>
+ <string>LtnSmJ</string>
+ <string>LtnSmK</string>
+ <string>LtnSmL</string>
+ <string>LtnSmM</string>
+ <string>LtnSmN</string>
+ <string>LtnSmO</string>
+ <string>LtnSmP</string>
+ <string>LtnSmQ</string>
+ <string>LtnSmR</string>
+ <string>LtnSmS</string>
+ <string>LtnSmT</string>
+ <string>LtnSmU</string>
+ <string>LtnSmV</string>
+ <string>LtnSmW</string>
+ <string>LtnSmX</string>
+ <string>LtnSmY</string>
+ <string>LftCurlyBrac</string>
+ <string>VertLine</string>
+ <string>RtCurlyBrac</string>
+ <string>Tilde</string>
+ <string>LtnCapADiaer</string>
+ <string>LtnSmAAcute</string>
+ <string>LtnSmAGrave</string>
+ <string>LtnSmACircum</string>
+ <string>LtnSmADiaer</string>
+ <string>LtnSmATilde</string>
+ <string>LtnSmARingAbv</string>
+ <string>DottedCirc</string>
+ <string>Hyphen</string>
+ <string>NonBreakingHyphen</string>
+ <string>Hyphen_Soft</string>
+ <string>CombAcute</string>
+ <string>CombGrave</string>
+ <string>CombCircum</string>
+ <string>CombTilde</string>
+ <string>CombDiaer</string>
+ <string>CombRingAbv</string>
+ </array>
+ <key>public.postscriptNames</key>
+ <dict>
+ <key>Ampersand</key>
+ <string>ampersand</string>
+ <key>Apos</key>
+ <string>quotesingle</string>
+ <key>Asterisk</key>
+ <string>asterisk</string>
+ <key>AtSgn</key>
+ <string>at</string>
+ <key>CircumAccent</key>
+ <string>asciicircum</string>
+ <key>Colon</key>
+ <string>colon</string>
+ <key>CombAcute</key>
+ <string>acutecomb</string>
+ <key>CombCircum</key>
+ <string>uni0302</string>
+ <key>CombDiaer</key>
+ <string>uni0308</string>
+ <key>CombGrave</key>
+ <string>gravecomb</string>
+ <key>CombRingAbv</key>
+ <string>uni030A</string>
+ <key>CombTilde</key>
+ <string>tildecomb</string>
+ <key>Comma</key>
+ <string>comma</string>
+ <key>DigitEight</key>
+ <string>eight</string>
+ <key>DigitFive</key>
+ <string>five</string>
+ <key>DigitFour</key>
+ <string>four</string>
+ <key>DigitNine</key>
+ <string>nine</string>
+ <key>DigitOne</key>
+ <string>one</string>
+ <key>DigitSeven</key>
+ <string>seven</string>
+ <key>DigitSix</key>
+ <string>six</string>
+ <key>DigitThree</key>
+ <string>three</string>
+ <key>DigitTwo</key>
+ <string>two</string>
+ <key>DigitZero</key>
+ <string>zero</string>
+ <key>DollarSgn</key>
+ <string>dollar</string>
+ <key>DottedCirc</key>
+ <string>uni25CC</string>
+ <key>EqSgn</key>
+ <string>equal</string>
+ <key>ExclamationMrk</key>
+ <string>exclam</string>
+ <key>FullStop</key>
+ <string>period</string>
+ <key>GTSgn</key>
+ <string>greater</string>
+ <key>GraveAccent</key>
+ <string>grave</string>
+ <key>Hyphen</key>
+ <string>uni2010</string>
+ <key>HyphenMinus</key>
+ <string>hyphen</string>
+ <key>Hyphen_Soft</key>
+ <string>uni00AD</string>
+ <key>LTSgn</key>
+ <string>less</string>
+ <key>LftCurlyBrac</key>
+ <string>braceleft</string>
+ <key>LftParen</key>
+ <string>parenleft</string>
+ <key>LftSqrBrac</key>
+ <string>bracketleft</string>
+ <key>LowLine</key>
+ <string>underscore</string>
+ <key>LtnCapA</key>
+ <string>A</string>
+ <key>LtnCapA.alt</key>
+ <string>A</string>
+ <key>LtnCapADiaer</key>
+ <string>Adieresis</string>
+ <key>LtnCapB</key>
+ <string>B</string>
+ <key>LtnCapC</key>
+ <string>C</string>
+ <key>LtnCapD</key>
+ <string>D</string>
+ <key>LtnCapE</key>
+ <string>E</string>
+ <key>LtnCapF</key>
+ <string>F</string>
+ <key>LtnCapG</key>
+ <string>G</string>
+ <key>LtnCapH</key>
+ <string>H</string>
+ <key>LtnCapI</key>
+ <string>I</string>
+ <key>LtnCapJ</key>
+ <string>J</string>
+ <key>LtnCapK</key>
+ <string>K</string>
+ <key>LtnCapL</key>
+ <string>L</string>
+ <key>LtnCapM</key>
+ <string>M</string>
+ <key>LtnCapN</key>
+ <string>N</string>
+ <key>LtnCapO</key>
+ <string>O</string>
+ <key>LtnCapP</key>
+ <string>P</string>
+ <key>LtnCapQ</key>
+ <string>Q</string>
+ <key>LtnCapR</key>
+ <string>R</string>
+ <key>LtnCapS</key>
+ <string>S</string>
+ <key>LtnCapT</key>
+ <string>T</string>
+ <key>LtnCapU</key>
+ <string>U</string>
+ <key>LtnCapV</key>
+ <string>V</string>
+ <key>LtnCapW</key>
+ <string>W</string>
+ <key>LtnCapX</key>
+ <string>X</string>
+ <key>LtnCapY</key>
+ <string>Y</string>
+ <key>LtnSmA</key>
+ <string>a</string>
+ <key>LtnSmAAcute</key>
+ <string>aacute</string>
+ <key>LtnSmACircum</key>
+ <string>acircumflex</string>
+ <key>LtnSmADiaer</key>
+ <string>adieresis</string>
+ <key>LtnSmAGrave</key>
+ <string>agrave</string>
+ <key>LtnSmARingAbv</key>
+ <string>aring</string>
+ <key>LtnSmATilde</key>
+ <string>atilde</string>
+ <key>LtnSmB</key>
+ <string>b</string>
+ <key>LtnSmC</key>
+ <string>c</string>
+ <key>LtnSmD</key>
+ <string>d</string>
+ <key>LtnSmE</key>
+ <string>e</string>
+ <key>LtnSmF</key>
+ <string>f</string>
+ <key>LtnSmG</key>
+ <string>g</string>
+ <key>LtnSmH</key>
+ <string>h</string>
+ <key>LtnSmI</key>
+ <string>i</string>
+ <key>LtnSmJ</key>
+ <string>j</string>
+ <key>LtnSmK</key>
+ <string>k</string>
+ <key>LtnSmL</key>
+ <string>l</string>
+ <key>LtnSmM</key>
+ <string>m</string>
+ <key>LtnSmN</key>
+ <string>n</string>
+ <key>LtnSmO</key>
+ <string>o</string>
+ <key>LtnSmP</key>
+ <string>p</string>
+ <key>LtnSmQ</key>
+ <string>q</string>
+ <key>LtnSmR</key>
+ <string>r</string>
+ <key>LtnSmS</key>
+ <string>s</string>
+ <key>LtnSmT</key>
+ <string>t</string>
+ <key>LtnSmU</key>
+ <string>u</string>
+ <key>LtnSmV</key>
+ <string>v</string>
+ <key>LtnSmW</key>
+ <string>w</string>
+ <key>LtnSmX</key>
+ <string>x</string>
+ <key>LtnSmY</key>
+ <string>y</string>
+ <key>NonBreakingHyphen</key>
+ <string>uni2011</string>
+ <key>NumSgn</key>
+ <string>numbersign</string>
+ <key>PercentSgn</key>
+ <string>percent</string>
+ <key>PlusSgn</key>
+ <string>plus</string>
+ <key>QstnMrk</key>
+ <string>question</string>
+ <key>QuotMrk</key>
+ <string>quotedbl</string>
+ <key>ReverseSolidus</key>
+ <string>backslash</string>
+ <key>RtCurlyBrac</key>
+ <string>braceright</string>
+ <key>RtParen</key>
+ <string>parenright</string>
+ <key>RtSqrBrac</key>
+ <string>bracketright</string>
+ <key>Semicolon</key>
+ <string>semicolon</string>
+ <key>Solidus</key>
+ <string>slash</string>
+ <key>Space</key>
+ <string>space</string>
+ <key>Tilde</key>
+ <string>asciitilde</string>
+ <key>VertLine</key>
+ <string>bar</string>
+ </dict>
+</dict>
+</plist>
diff --git a/tests/reference/ufo/psfsetassocfeat.ufo/metainfo.plist b/tests/reference/ufo/psfsetassocfeat.ufo/metainfo.plist
new file mode 100644
index 0000000..aa10c5c
--- /dev/null
+++ b/tests/reference/ufo/psfsetassocfeat.ufo/metainfo.plist
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>creator</key>
+ <string>org.sil.scripts.pysilfont</string>
+ <key>formatVersion</key>
+ <integer>3</integer>
+</dict>
+</plist>