Bom dia Cristiano, agora eu entendi melhor.
Cara essa me pegou xD. É uma situação complicada mesmo.
Existe um estudo e testes bem aprofundados para isso. O que acontece.
O motor de render o firefox é diferente do motor de render do google chrome, e ambos identificam propriedades diferentes para o pseudo-elemento first-letter. Enquanto um utiliza de uma leitura baseada no css2 o outro utiliza uma baseada no css3 e isso diferencia completamente o bloco e seus espaçamentos.
Blz após entender isso, como podemos resolver? Temos duas soluções que são consideradas hacks mas não existe problema em utiliza-las.
1º - No código que você vai montar no pseudo-elemento first-letter você tem que especificar os espaçamentos e tamanhos da fonte de uma forma que tanto o mozila quanto o google chrome fiquem semelhantes em espaçamento, o mozila não identifica a propriedade line-height, então esta propriedade é a principal para deixar os dois layouts semelhantes. Depois de vários testes feitos pela pesquisadora Laura Franz’s ela chegou a esta linha de código para deixar o first-letter o mais próximo possível em todos os browser:
p.texto:first-letter{
font-size:350%;
margin:11px 0 -5px 0;
padding:0 .1em 0 0;
height:.7em;
line-height:.65em;
float:left;
color:#333;
*line-height:1em; /* IE7 Only */
}
Nesta bloco de código estamos especificando:
Um tamanho fixo da fonte 350% (com referencia ao tamanho da fonte especificado para classe ".texto")
Uma altura para o bloco, que vai ser identificado pelo chrome e não pelo firefox.
Uma margin negativa que vai ser identificada pelos dois browsers.
E o line-height negativo para compensar o espaçamento existente na altura total da letra e vai ser interpretada apenas pelo chrome.
A linha com asterisco é para criar uma interpretação única para o internet explorer tradicional já que o motor de render dele é diferente de todos, mas o explorer edge utiliza o mesmo motor do chrome.
Assim você consegue deixar o layout beeeeeeem semelhante em ambos os browsers, essa foi a saida um.
2º - você pode em vez de utlilzar o pseudo-elemento, criar um span em todas as primeiras letras do texto para gerar este efeito, com o span a identificação de um bloco com as mesmas propriedades de margin e padding é identica para cada browser, a desvantagem é ter que colocar a tag no inicio de todos os textos do site, exemplo:
-------CSS-----------------
span.primeira-letra{
font-size:4em;
float:left;
background:#333;
color:#fff;
line-height:1.5em;
padding:10px;
margin:0px 15px 5px 0px;
}
-------HTML----------------------
<p class="texto"><span class="primeira-letra">L</span>orem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatibus recusandae tempora assumenda perferendis sed accusantium cumque ea, praesentium blanditiis porro dolores velit molestias, officia voluptates, minus inventore suscipit vitae sequi perspiciatis nulla vero quas fugit. Voluptates itaque recusandae, accusamus vero id maiores facilis repudiandae cum optio aliquid, voluptatem a sint!praesentium blanditiis porro dolores velit molestias, officia voluptates, minus inventore suscipit vitae sequi perspiciatis nulla vero quas fugit. Voluptates itaque recusandae,</p>
Essas são as duas saídas para o seu problema, e com certeza gera problemas para muitas outras pessoas.
Perdão o texto enorme, ^^ mas precisava de uma explicação mais detalhada sobre o que esta acontecendo.
Quando der faça o teste, veja se funciona, eu fiz os testes por aqui e deu certo.
Um grande abraço e sempre que precisar estaremos aqui para auxiliar, bons estudos 8D