I have absolutely no idea why it renders this way on your Chrome, maybe an issue with TypeKit?
About the visualization, it was done semi-manually with a tool I've developed to heuristically minimize the crossings, but their is no way to obtain this kind of layout purely algorithmically (I'm pretty sure it's NP-hard).
it looks like the groups are scored numerically but the senators are simply ranked
Not quite sure what you mean. The groups were positioned in order to have the one with most Republicans on one side and the one with most Democrats on the other one. There were consistently two groups for those sessions, this I can assure you. The order of the senators inside the groups is arbitrary, in order to attempt to minimize the number of crossings and provide a readable output.